iOS Objective-C:weakSelf语法

时间:2015-03-31 00:08:26

标签: ios objective-c design-patterns automatic-ref-counting weak-references

我在网上遇到的weakSelf模式的几乎每个例子都有语法

__weak typeof(self) weakSelf = self;

但是编译器在最新版本的Xcode中抱怨这种语法,需要:

__weak __typeof__(self) weakSelf = self;

语法是否改变,或者我错过了导入?我尝试了<objc/runtime.h>,但没有改变。

隐形奖金问题:为什么不明确地投出它?

__weak MyBoffoClass *weakSelf = self;

我在这里找到一个答案,说最好直接投射,但没有理由说明原因。

1 个答案:

答案 0 :(得分:0)

在@danh的帮助指向我Difference between typeof, __typeof and __typeof__ (Objective-c)之后,我发现问题出在编译器设置中。

点击Project Navigator窗口顶部的项目,点击Build Settings,然后选择View AllChoosing Settings

接下来,向下滚动到Apple LLVM n n - 语言并检查设置: Language Settings

就我而言,语言方言设置为C99,它不支持GNU编译器宏和C语言的其他扩展。

不确定为什么它为项目设置这样(项目架构师不记得原因),我只需要在阅读StackOverflow代码片段时考虑到这一点。因为我是一个懒惰的打字员而不是通过改变它来介绍一些东西。