【问题标题】:Clear a delegate清除委托
【发布时间】:2011-09-06 15:29:36
【问题描述】:

清除 UIWebView 委托的正确方法是什么?

在我的 dealloc 函数中,我添加了

[myWebView setDelegate:nil];
[myWebView release];

第一行是必要的吗?

编辑:如果我的对象不是 UIWebView 而是 NSFetchedResultsController 怎么办?

谢谢

【问题讨论】:

    标签: iphone ios delegates


    【解决方案1】:

    将委托设置为 nil 是一回事。其他同样重要甚至更重要的是,当您不再关心结果并且即将发布包含 UIWebView 的视图时,如何干净地关闭正在加载的 UIWebView。

    这是对上述问题和更多问题的一个非常好的答案:How to safely shut down a loading UIWebView in viewWillDisappear?。它将很好地概述 UIWebView 的生命周期。

    关于调用stopLoading 的提示:在调用stopLoading 之前,您不必检查是否正在使用isLoading 加载任何内容 - 只需直接调用stopLoading,如果没有加载任何内容,它将不会执行任何操作。

    【讨论】:

      【解决方案2】:

      在上面的代码的情况下。不,您可能不需要清除委托。

      但是,如果您有 ClassA 和 ClassB,并且您已将 ClassA 设置为 ClassB 的委托,那么您需要注意的是......当 ClassA 被释放而 ClassB 仍在使用时。

      因此,为了处理这个问题,ClassA 将在 ClassA 的 dealloc 方法中从 ClassB 的委托属性中清除(自身)。

      【讨论】:

        【解决方案3】:

        我认为您只需要在发布之前取消所有请求:

        [webView stopLoading];
        

        干杯!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-04-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-12
          • 1970-01-01
          相关资源
          最近更新 更多