我在网上遇到的weakSelf
模式的几乎每个例子都有语法
__weak typeof(self) weakSelf = self;
但是编译器在最新版本的Xcode中抱怨这种语法,需要:
__weak __typeof__(self) weakSelf = self;
语法是否改变,或者我错过了导入?我尝试了<objc/runtime.h>
,但没有改变。
隐形奖金问题:为什么不明确地投出它?
__weak MyBoffoClass *weakSelf = self;
我在这里找到一个答案,说最好直接投射,但没有理由说明原因。
答案 0 :(得分:0)
在@danh的帮助指向我Difference between typeof, __typeof and __typeof__ (Objective-c)之后,我发现问题出在编译器设置中。
点击Project Navigator
窗口顶部的项目,点击Build Settings
,然后选择View All
:
接下来,向下滚动到Apple LLVM n 。 n - 语言并检查设置:
就我而言,语言方言设置为C99,它不支持GNU编译器宏和C语言的其他扩展。
不确定为什么它为项目设置这样(项目架构师不记得原因),我只需要在阅读StackOverflow代码片段时考虑到这一点。因为我是一个懒惰的打字员而不是通过改变它来介绍一些东西。