ブロックを期待する関数があるとしましょう:
void foo(Foo (^block)(Bar));
そして、ブロックではないことを除いて、同じシグネチャを持つ関数があるとしましょう。
Foo myFunction(Bar);
私がすることができます:
foo(^(Bar bar) { return myFunction(bar); });
しかし、私はむしろこれを行いたいと思います。これは、それが機能した場合と同等です。
foo(&myFunction);
私がしようとすると、XCodeは次のように言います。
No matching function for call to 'foo'
ブロックはいくつかのコンテキストを伴う関数ポインタであるため、そのレベルでは、プレーンな関数ポインタを空のコンテキストを持つブロックとして使用するのが妥当と思われます。出来ますか?