在委托属性声明中,'weak'和'assign'有什么区别
这是什么区别:
@property (nonatomic, weak) id <SubClassDelegate> delegate;
和这个:
@property (nonatomic, assign) id <SubClassDelegate> delegate;
我想为代表使用财产。
weak
和assign
的唯一区别是,如果weak
属性指向的对象被释放,那么weak
指针的值将被设置nil
,这样就不会有访问垃圾的风险。 如果你使用assign
,那就不会发生,所以如果对象从你下面被释放,并且你试图访问它,你将会访问垃圾。
对于Objective-C对象,如果你处于可以使用weak
的环境中,那么你应该使用它。