ARC:财产与伊娃:复制,弱

时间:2013-10-26 21:36:52

标签: objective-c properties automatic-ref-counting weak-references ivar

从阅读Property vs. ivar in times of ARC开始,我了解当我直接获取或设置__strong属性的自动合成关联实例变量时,ARC将使用strong所有权限定符,但不会调用自定义getter或setter也不会触发KVO。

但是,如果我将属性声明为weak,那么:

@property (weak, nonatomic) id <XYZExampleViewDelegate> delegate;
  1. 自动合成的关联实例变量是否会采用__weak所有权限定符?

    例如,我的

    实施中会_delegate = delegate(vs self.delegate = delegate
    - (id)initWithDelegate:(id <XYZExampleViewDelegate>)delegate
    

    根据__weak资格进行分配?

  2. 使用copy声明的属性怎么样?

1 个答案:

答案 0 :(得分:4)

  1. 是的,属性修饰符weak暗示__weak所有权。使用属性修饰符隐含的所有权限定符创建属性的关联实例变量(或支持ivar)。有关属性修饰符的列表以及它们所暗示的所有权限定符,请参阅Clang documentation on ARC property declarations

  2. 属性修饰符copy暗示__strong所有权。因此,在直接设置支持ivar时,将保留新的指针,但不会复制。要复制它,请使用setter。

相关问题