【发布时间】:2011-06-15 07:35:50
【问题描述】:
我看过许多与代表相关的帖子,我想知道引用它们的正确方法。假设我有一个声明如下的对象:
@interface MyViewController : UITableViewController {
id delegate;
}
@property (nonatomic, retain) id delegate;
@end
通过MyViewController 的生命周期,它将调用其委托的方法以响应与用户的交互。
当需要删除MyViewController 的实例时,delegate ivar 是否需要在实现的dealloc 方法中进行release'ed,因为它是用retain 声明的?
或者相反,是否应该保留delegate?也许应该是@property (nonatomic, assign) id delegate?根据Apple's docs:
retain ...您通常将此属性用于标量类型,例如 NSInteger 和 CGRect,或者(在引用计数环境中)用于您不拥有的对象,例如委托。
通常我会按照文档所说的进行,但我看到很多代码在委托上调用 retain。这只是“糟糕的代码”吗?我听从这里的专家……处理这个问题的正确方法是什么?
【问题讨论】:
标签: ios objective-c cocoa-touch memory-management