arc禁止显式消息发送保留

时间:2013-03-21 15:33:01

标签: iphone objective-c xcode

Xcode发现一个问题 ARC禁止在

上发送保留的明确消息
_photo = [photo retain];

将其更改为

_photo = [photo];

不起作用

我不想使用-fno-objc-arc来禁用它。

还有其他方法吗?

4 个答案:

答案 0 :(得分:4)

如果您想要启用ARC,请执行_photo = photo;不需要括号。只要_photo不弱,(声明前面有__weak)ARC就会为你插入一个retain来电!

答案 1 :(得分:4)

 _photo = [photo];

无效。

使用

 _photo = photo;

使用ARC的编译器可以智能地了解您要执行的操作,保留或复制或释放。无需使用保留。你的陈述在语法上是错误的。

答案 2 :(得分:1)

ARC为您提供必要的保留和发布消息。你只需要完成作业

_photo = photo;

一切都会好起来的。

答案 3 :(得分:1)

  

xCode发现了一个问题ARC禁止发送retain ...

的显式消息
随着ARC的发布,

-retain已被弃用。它现在是一个需要编译器插入的函数,并且不允许您调用。 (但它仍然可以被覆盖)。

  

_photo = [照片];

消息需要目标和选择器。您只提供了一个目标。取下牙箍。作业将自动转换为类似的内容。

[self->_photo release];
self->_photo = [photo retain];