【发布时间】:2012-06-06 22:30:43
【问题描述】:
当我在 ARC 模式下在 CoreData 中为我的实体创建模型对象时,它会改为生成保留或强保留。那么保留工作并在 ARC 模式下编译吗?我认为在 ARC 模式下我们不能使用 release、autorelease 和 retain 关键字?
【问题讨论】:
-
嗯,这令人惊讶,没有回应?
标签: core-data automatic-ref-counting
当我在 ARC 模式下在 CoreData 中为我的实体创建模型对象时,它会改为生成保留或强保留。那么保留工作并在 ARC 模式下编译吗?我认为在 ARC 模式下我们不能使用 release、autorelease 和 retain 关键字?
【问题讨论】:
标签: core-data automatic-ref-counting
您的意思是它会生成这样的@property 声明吗?
@property (nonatomic, retain) MyObject *object;
retain 属性属性表示 ARC 下的strong。
【讨论】:
retain 关键字。它禁止使用retain 选择器。关键字和选择器完全不同。请参阅我链接的文档的第 7.1.1 节。
请查看此答案:https://stackoverflow.com/a/10036821/662605
它的要点是,如果你 @synthesize 你的属性,那么引擎盖下生成的代码将依赖于 retain 类型(retain、assign、copy)。
生成的托管对象子类使用@dynamic 而不是@synthesize,所有这些事情都在为您神奇地发生,所以实际上,尽管令人困惑,但似乎没有使用retain 关键字,因此ARC 是'不要抱怨......我很确定就是这样。
虽然我确实尝试将实现交换为使用 @synthesize 并且仍然没有出错,但我认为我们可以通过链接上的答案找到一些东西
任何其他见解都会很好。
【讨论】: