我看到了很多关于委托的帖子,我想知道正确的引用方式。假设我声明了一个对象,如下所示:
@interface MyViewController : UITableViewController {
id delegate;
}
@property (nonatomic, retain) id delegate;
@end
在MyViewController
的生命周期内,它将根据用户的交互调用其委托的方法。
当需要摆脱MyViewController
实例时,由于它是使用retain
声明的,因此在实现的dealloc
方法中是否需要释放delegate
ivar?
或者相反,delegate
是否应该被保留?也许应该是@property (nonatomic, assign) id delegate
?根据Apple's docs:
retain ... 您通常对标量类型(例如NSInteger和CGRect)或(在引用计数环境中)对您不拥有的对象(例如委托)使用此属性。
通常我会遵循文档所说的做法,但我看到了很多调用委托的retain
代码。这只是"bad code"吗?我听从专家的意见... 应该如何正确处理这个问题?