[英]Automatic Reference Counting & Synthesized Properties
使用ARC for iOS时,以下是否有任何区别?
@property (strong, nonatomic) NSObject *someProperty;
...
@synthesize someProperty;
//and then in the init method, either:
self.someProperty = aProperty;
//or
someProperty = aProperty;
我知道没有ARC,self.someProperty实际上是调用合成的setter方法,该方法向对象发送一条retain
消息。 但是现在使用ARC,如果我使用点符号设置这样的属性是否重要?
更一般地说,ARC真的意味着我根本不必担心引用计数吗? 或者在某些情况下,我编写代码的方式可能会导致ARC出错?
区别与没有ARC的情况相同:通过使用点表示法,您调用合成的setter,并通过直接分配给ivar,您将使用setter方法。
在ARC下,两个选项之间的内存管理没有差异,但你仍然应该在两个选项之间做出有意识的决定:例如,直接分配到ivar旁路KVO,而通过setter方法稍微慢但可能更安全在大多数情况下,例如,当您稍后决定使属性成为atomic
或覆盖设置器时。
就个人而言,我总是会使用属性表示法self.abc = ...;
除了可能在init
,通常需要绕过KVO。 简而言之,使用您在ARC之前使用的相同推理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.