Objective-C ARC__weak变量引用触发警告"__weak attribute cannot be specified on an automatic variable"



我有一个应用程序(只有ios5),它在一个方法中声明了一个弱变量,该变量在块中用于引用视图控制器的实例。

 QRCodeViewController * __weak weakSelf = self;

问题是编译器显示了一个警告:

__不能在自动变量上指定弱属性

在那个应用程序中,我使用了很多弱引用,我从未见过这样的警告,与其他类的唯一区别是,这个类是在.mm文件中实现的,因为它使用c++对象,如果我将其保留为.m,则项目无法编译。
我必须说,代码似乎运行良好
有什么建议吗?

面对同样的警告,我使用__block属性以以下方式使其消失:

__block __weak MyViewController* weakSelf = self;

我不知道为什么警告说不能指定__weak。AFAIK应该可以指定它,即使对自动变量使用__weak是非常危险的。

苹果公司的文档说,如果你这样做,编译器会提供警告,但实际的警告文本似乎意味着该属性将被忽略,不仅意味着使用它是危险的,而文档似乎意味着它很危险,但它按预期工作(如果你真的明白会发生什么)。

您必须做一些实验来验证警告文本是否不合适,或者文档是否没有正确更新。

相关内容

  • 没有找到相关文章

最新更新