这是一个使用__block
变量的简单程序:
typedef void (^incrementBlock)(void);
__block int incrementMe = 0;
incrementBlock add_one = ^{
incrementMe++;
};
incrementBlock add_two = ^{
incrementMe++;
incrementMe++;
};
add_one();
add_two();
printf("%d", incrementMe);
当我编译它时,我收到此错误:
架构x86_64的未定义符号:“___ objc_personality_v0”, 引自: _main in test-b0a9a6.o test-b0a9a6.o中的Dwarf异常展开信息(__eh_frame)ld:未找到架构x86_64 clang的符号:错误:链接器 命令失败,退出代码为1(使用-v查看调用)
将incrementMe
声明为__block int
,当我发表评论时,这肯定是个问题。
我尝试用gcc进行编译,但它也没有用。
我从一本书中或多或少地直接得到了这个例子,所以它应该有效。
我的声明是否已被弃用?我应该以不同方式声明可变块变量吗?
答案 0 :(得分:1)
您的代码很好,您只需要确保链接Objective-C运行时库。将-lobjc
添加到您的链接器命令行,您应该很好。