在委托属性声明中,'weak'和'assign'有什么区别

这是什么区别:

@property (nonatomic, weak) id <SubClassDelegate> delegate; 

和这个:

 @property (nonatomic, assign) id <SubClassDelegate> delegate; 

我想为代表使用财产。

weakassign的唯一区别是,如果weak属性指向的对象被释放,那么weak指针的值将被设置nil ,这样就不会有访问垃圾的风险。 如果你使用assign ,那就不会发生,所以如果对象从你下面被释放,并且你试图访问它,你将会访问垃圾。

对于Objective-C对象,如果你处于可以使用weak的环境中,那么你应该使用它。