合成属性的属性: retain / assign
- retain - 被保留,旧值被释放并被分配
- assign - 仅被分配
所有权属性: IOS5 = strong / weak IOS4 = retain / unsafe_unretained
strong(iOS4 = retain)- 我是拥有者,您不能在我同意之前释放此对象 = retain
weak(iOS4 = unsafe_unretained)- 和assign一样,没有保留或释放操作
因此,unsafe_unretained == assign吗?
@property (nonatomic, assign) NSArray * tmp;
等于什么?
@property (nonatomic, unsafe_unretained) NSArray * tmp;
反之亦然吗?
如果是这样的话,在iOS4中应该首选哪个选项,或者为什么会有(unsafe_unretained),如果它与assign完全相同的话?
iOS4中的委托应该是unsafe_unretained还是assign?
weak
代理与unsafe_unretained
相比正是我所需要的!一些遗留的旧代码仍然使用unsafe_unretained
,导致在执行代理方法时出现“Thread 1: EXC_BAD_ACCESS (code=1, address=0x...)”错误。代理已经被释放但没有被置空,因此它实际上通过了我的nil检查并开始执行选择器,这不是我想要的结果 :( - alexgophermix