为什么剂量(复制)属性和(强)属性init不同?

时间:2017-05-23 13:40:14

标签: objective-c

当使用代码init方法时,应该为(copy)属性分配

_foo = [foo copy];

但是对于(strong)属性,只需指定它:

_bar = bar;

1 个答案:

答案 0 :(得分:2)

使用strong属性,变量(var _bar)本身为strong,因此分配足以创建强引用。

虽然没有自动完成复制。没有copy个变量,因此必须明确调用copy

就在几年前,在引入自动引用计数之前,strong分配曾经是:

_bar = [bar retain];

但是在ARC中自动化了,现在我们只需要

_bar = bar;

顺便说一下,直接分配属性没有根本的错误:

self.bar = bar;

适用于copystrong属性。只有当您的二传手读取其他可能尚未初始化的属性时,才需要通过ivar _bar进行访问。