我应该在哪个UIViewController方法中将视图控制器的所有出现设置为委托?是viewDidUnload(太早了吗?),dealloc(太晚了?)还是别的什么?
答案 0 :(得分:0)
要避免EXC_BAD_ACCESS,您应该在dealloc中将委托属性设置为nil。这可以保证其他对象在取消分配后不会尝试向您的对象发送委托消息。例如,如果你的UIViewController有一个webView属性,它是一个UIWebViewDelegate,你应该这样做:
- (void)dealloc {
self.webView.delegate = nil;
self.webView = nil; // assuming @property (nonatomic, retain), or use [webView release] if you prefer.
[super dealloc];
}
如果您因为其他原因想要停止接收委托消息,可以将委托设置为nil,但如果您只是想避免使用EXC_BAD_ACCESS则没有必要。