当使用代码init方法时,应该为(copy)
属性分配
_foo = [foo copy];
但是对于(strong)
属性,只需指定它:
_bar = bar;
答案 0 :(得分:2)
使用strong
属性,变量(var _bar
)本身为strong
,因此分配足以创建强引用。
虽然没有自动完成复制。没有copy
个变量,因此必须明确调用copy
。
就在几年前,在引入自动引用计数之前,strong
分配曾经是:
_bar = [bar retain];
但是在ARC中自动化了,现在我们只需要
_bar = bar;
顺便说一下,直接分配属性没有根本的错误:
self.bar = bar;
适用于copy
和strong
属性。只有当您的二传手读取其他可能尚未初始化的属性时,才需要通过ivar _bar
进行访问。