将UIWebView委托属性设置为nil

时间:2012-11-05 02:12:15

标签: iphone objective-c cocoa

根据documentation,在处理UIWebView实例之前,需要将UIWebView委托属性设置为nil。

我的问题是:如果在IB中设置了UIWebView,其委托指向文件所有者,这是一个viewController。并且UIWebView及其superview在执行过程中从未被处理掉,委托是否需要设置为nil?

我问这个因为看起来很难获得对UIWebView的引用。

希望知识渊博的人可以给出一些提示。

(非弧设置)

1 个答案:

答案 0 :(得分:5)

遵循文档中的建议始终是一种好习惯。在大多数情况下,你所建议的通常是正确的:没有必要将委托设置为nil,因为对象将被销毁的唯一时间是执行结束时。 然而,这类似于说“我不需要释放这个堆空间,因为它只会在主要返回之前立即释放”...

更紧迫的问题是如果应用程序收到低内存警告会发生什么。如果收到内存警告并且UIWebView已卸载且委托未设置为nil,那么您可能会在幕后发生内存泄漏,具体取决于UIWebView设置时所执行的操作/删除其代表。

如果在销毁时将委托设置为nil,则UIWebView在检测到委托设置为nil时会处理需要发生的任何事情。如果不这样做,并且实例被无法预测地销毁(例如,由于内存警告不足),那么一旦警告清除,将再次加载并且无论采取何种程序来设置UIWebView' s委托将运行两次,而不会发生“关闭”程序。鉴于他们坚持你在破坏时将委托设置为nil,我认为这表现为内存泄漏或同样邪恶的东西。