这有什么区别:
@property (nonatomic, weak) id <SubClassDelegate> delegate;
和此:
@property (nonatomic, assign) id <SubClassDelegate> delegate;
我想为代表使用属性。
答案 0 :(得分:149)
weak
和assign
之间的唯一区别是,如果weak
属性指向的对象被解除分配,则weak
指针的值将设置为nil
,以免您冒险访问垃圾。如果您使用assign
,则不会发生这种情况,因此如果对象从您下面取消分配并且您尝试访问它,则会访问垃圾。
对于Objective-C对象,如果您处于可以使用weak
的环境中,那么您应该使用它。