簡體   English   中英

Objective-C塊錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM