我有一个应用程序(只有ios5),它在一个方法中声明了一个弱变量,该变量在块中用于引用视图控制器的实例。
QRCodeViewController * __weak weakSelf = self;
问题是编译器显示了一个警告:
__不能在自动变量上指定弱属性
在那个应用程序中,我使用了很多弱引用,我从未见过这样的警告,与其他类的唯一区别是,这个类是在.mm文件中实现的,因为它使用c++对象,如果我将其保留为.m,则项目无法编译。
我必须说,代码似乎运行良好
有什么建议吗?
面对同样的警告,我使用__block属性以以下方式使其消失:
__block __weak MyViewController* weakSelf = self;
我不知道为什么警告说不能指定__weak
。AFAIK应该可以指定它,即使对自动变量使用__weak
是非常危险的。
苹果公司的文档说,如果你这样做,编译器会提供警告,但实际的警告文本似乎意味着该属性将被忽略,不仅意味着使用它是危险的,而文档似乎意味着它很危险,但它按预期工作(如果你真的明白会发生什么)。
您必须做一些实验来验证警告文本是否不合适,或者文档是否没有正确更新。