0

Xcode 发现一个问题ARC 禁止显式消息发送的保留

_photo = [photo retain];

将其更改为

_photo = [photo];

不工作

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

还有其他方法吗?

4

4 回答 4

4

如果您想保留 ARC,则_photo = photo;不需要括号。只要_photo不弱,(__weak声明前有a)ARC就会为你插入retaincall!

于 2013-03-21T15:34:57.193 回答
4
 _photo = [photo];

是无效的。

采用

 _photo = photo;

使用 ARC 的编译器非常智能,可以理解您想要做什么,保留或复制或释放。无需使用保留。你的陈述在语法上是错误的。

于 2013-03-21T15:35:05.713 回答
1

ARC 会为您提供必要的保留和释放消息。你只做任务

_photo = photo;

一切都会好起来的。

于 2013-03-21T15:35:40.377 回答
1

xCode 发现一个问题 ARC 禁止显式消息发送保留...

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

_photo = [照片];

消息需要一个目标和一个选择器。您只提供了一个目标。取下大括号。分配将自动转换为类似的东西。

[self->_photo release];
self->_photo = [photo retain];
于 2013-03-21T15:37:44.840 回答