我想知道在启用ARC的情况下,为基本数据类型(如bool
)编写合成属性的正确方法是什么。使用ARC的原始数据类型的合成属性 - 弱或分配?
我使用ARC之前,使用这样的:
@property(assign) bool isOn;
但它是我的理解(也许是错误的)已启用ARC时,你不应该使用assign
。我试图用weak
替换这个,但我得到错误 -
“弱”属性的属性必须是对象类型。
我应该继续使用assign
吗?
我想知道在启用ARC的情况下,为基本数据类型(如bool
)编写合成属性的正确方法是什么。使用ARC的原始数据类型的合成属性 - 弱或分配?
我使用ARC之前,使用这样的:
@property(assign) bool isOn;
但它是我的理解(也许是错误的)已启用ARC时,你不应该使用assign
。我试图用weak
替换这个,但我得到错误 -
“弱”属性的属性必须是对象类型。
我应该继续使用assign
吗?
Assign
很好。 ARC代表“自动引用计数”,原始数据类型没有引用计数。
Weak
失败,因为没有对象,也没有任何ARC管理引用。
似乎你需要在这里阅读某个主题。 检查:http://clang.llvm.org/docs/AutomaticReferenceCounting.html
检查第4章;) 在这里你会读到,分配罚款与ARC。
当启用ARC时,您可以编写基本数据的合成属性,例如(例如:BOOL).. @property(unsafe_unretained)bool isOn;
因此,赋值并不是弱的完美同义词。但是再次,弱是默认的权利? –
默认情况下,ARC放置较强的 – deimus
“分配很好”我一直在阅读。它有一个很好的押韵,但它似乎回避了这一点:是“分配”必要!?如果你不使用“分配”会发生什么? – Rhubarb