假设我有一个名为colorPicker的类,它包含一个委托来通知颜色变化。
此委托的属性是否需要设置为retain
或assign
?为什么?
@interface ColorPicker : UIView
@property (nonatomic, retain) NSObject <ColorPickerDelegate> *delegate;
@end
答案 0 :(得分:4)
简短:使用assign
来避免保留周期。
保留对象会创建强引用,并且在释放所有强引用之前无法释放对象。如果两个对象彼此保留,则两个对象都不会被释放,因为它们之间的连接不能被破坏(source)
长:Why are Objective-C delegates usually given the property assign instead of retain?