【问题标题】:When to stop UIViewController from receiving delegate calls何时停止 UIViewController 接收委托调用
【发布时间】:2010-05-19 22:19:40
【问题描述】:

我应该在哪个 UIViewController 方法中将所有出现的视图控制器设置为 nil 作为委托?是 viewDidUnload(太早?)、dealloc(太晚?)还是别的什么?

【问题讨论】:

  • 嗯?你的UIViewController符合什么样的委托协议?
  • 任何协议。一般问题。

标签: iphone delegates uiviewcontroller


【解决方案1】:

为避免 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,则没有必要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多