【发布时间】:2011-05-18 21:43:07
【问题描述】:
我在这里读到了一个提示in a SO best practices posting:
“如果您将自己作为委托传递给另一个对象,请在解除分配之前重置该对象的委托。” 示例:
- (void)dealloc {
if (self.someObject.delegate == self) {
self.someObject.delegate = NULL;
}
self.someObject = NULL;
[super dealloc];
}
听起来很合理,但我不确定在什么情况下我需要这样做。 例如,我有一个如下所示的视图控制器:
- (void) viewDidLoad {
myTextField.returnKeyType = UIReturnKeyDone;
myTextField.delegate = self;
}
在这种情况下,我是否(应该)将委托设置为 NULL,例如:
- (void) dealloc {
if (self.myTextField.delegate == self) {
self.myTextField.delegate = NULL;
}
[myTextField release];
[super dealloc];
}
【问题讨论】:
-
值得注意的是,您可能应该使用 nil 而不是 NULL。 This SO question有一些关于此事的讨论
标签: cocoa-touch memory-management delegates