我可以用auto?
声明ObjC块auto fun = ^(int x) { NSLog(@"%d", x); }
fun(5);
我无法找到有效的语法。
答案 0 :(得分:4)
;
声明后,你遗漏了fun
。否则,您的语法正确,Clang将在-std=c++11 -fblocks
模式下接受C ++或Objective-C ++输入。 (注意,块实际上是一个正交扩展,它不是Objective-C的一部分。)
答案 1 :(得分:0)
我不认为C ++ / Objective-C ++中的auto关键字在objective-C中使用。
至于为您的示例声明块变量,以下内容将在objective-C
中起作用void(^fun)(int x) = ^(int x) {
NSLog(@"%d",x);
};
fun(5);
对于阻止的更多声明选项,有一个非常好的答案here
答案 2 :(得分:0)
auto关键字是c ++ 11关键字。 Objective-c是c而不是c ++的超集,因此不包含c ++的属性,而是c。至于objective-c ++,我不认为clang是所有新的c ++ 11特性的最新版本,特别是在构建objective-c ++的编译器中。希望这有帮助!