[英]Objective-C Blocks Error
我剛剛開始學習Objective-C。 嘗試制作很小的Objective-c塊示例時出現錯誤。 它總是顯示“期望的標識符或'('在'^'令牌之前”)錯誤嗎?請您告訴我我錯在哪里嗎?
#import <Foundation/Foundation.h>
@interface Block:NSObject
- (void) printAdd;
@end
@implementation Block
void (^addition) (int, int) = ^(int left, int right) {
NSLog(@"Total is: %d\n", left + right);
};
-(void) printAdd {
NSLog(@"Test");
addition(12, 13);
}
@end
int main() {
Block* myBlock = [[Block alloc] init];
[myBlock printAdd];
return 0;
}
比較而言,“官方” GCC不支持Objective-C塊, Linux上的編譯器是否支持Objective-C塊? ,因此您應該使用clang。 您還需要使用clang來利用其他Objective-C功能,例如“自動引用計數”。
舊答案:那是有效的Objective-C代碼。
我的猜測:您將其編譯為C程序(main.c)。 將源文件重命名為main.m應該可以解決該問題。
請注意,通常,Objective-C / Foundation程序的main()
應該建立一個“自動釋放池”:
int main(int argc, const char * argv[])
{
@autoreleasepool {
Block* myBlock = [[Block alloc] init];
[myBlock printAdd];
}
return 0;
}
如果在Xcode中創建新的“命令行工具”並選擇“類型=基礎”,則將獲得該代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.