@property (强,非原子) UIView *iVar;
当我设置它的时候,我做iVar = ...
还是self.iVar = ...
有关系吗?
BOOL selected
,这是否意味着它被推断为__unsafe_unretained
(因为没有属性将其指定为强),还是必须显式指定它?在回答ARC: How to release static variable?时,我似乎已经回答了我自己的问题,但我仍然对上面的问题感到有点困惑。
发布于 2011-11-03 04:44:53
从内存管理的角度来看,使用ivar = ...
或self.property = ...
(注意:没有self.ivar
这回事)是相同的。但是,使用ivar = ...
并不会调用设置器,而使用self.property = ...
则可以。这有3个重要的分支,没有特定的顺序:
nonatomic
,则对基础ivar的访问将不会获得锁,并且您将破坏原子性。如果该属性被您或子类覆盖,则不会调用被覆盖的setter。将不会发送至于只声明ivar,它具有与声明局部变量相同的内存管理语义。这是在section 4.4 of the Objective-C Automatic Reference Counting文档中记录的,但基本上,如果它是一个对象,它将被推断为__strong
。
https://stackoverflow.com/questions/7986954
复制相似问题