6

我有一个应用程序(仅限 ios5),它在方法内声明了一个在块内使用的弱变量来引用视图控制器的实例。

 QRCodeViewController * __weak weakSelf = self;

问题是编译器显示警告说:

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

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

4

2 回答 2

4

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

__block __weak MyViewController* weakSelf = self;
于 2013-11-01T12:58:26.503 回答
0

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

苹果文档说,如果你这样做,编译器会提供一个警告,但实际的警告文本似乎暗示该属性将被忽略,而不仅仅是使用它是危险的,而文档似乎暗示它是危险的,但它有效正如预期的那样(如果你真的明白会发生什么)。

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

于 2012-08-23T10:13:25.703 回答