2

自動でObjCブロックを宣言できますか?

auto fun = ^(int x) { NSLog(@"%d", x); }
fun(5);

そのための有効な構文を理解できません。

4

3 に答える 3

4

;の宣言の後にがありませんfun。それ以外の場合は、構文が正しく、Clangは-std=c++11 -fblocksC++またはObjective-C++入力のモードでそれを受け入れます。(ブロックは実際にはObjective-Cの一部ではない直交拡張であることに注意してください。)

于 2013-03-10T03:20:48.020 に答える
0

C ++ /Objective-C++のautoキーワードがobjective-Cで使用されているとは思いません。

あなたの例のブロック変数の宣言に関しては、以下はObjective-Cで機能します

void(^fun)(int x) = ^(int x) {
NSLog(@"%d",x);
};

fun(5);

ブロックのその他の宣言オプションについては、ここに非常に良い答えがあります

于 2013-01-15T16:31:38.950 に答える
0

autoキーワードはc++11キーワードです。Objective-cはc++ではなくcのスーパーセットであるため、c ++のプロパティではなく、cが含まれています。Objective-c ++に関しては、特にobjective-c ++をビルドするコンパイラーでは、clangがすべての新しいc++11機能について最新であるとは思いません。お役に立てれば!

于 2013-02-06T06:20:34.970 に答える