将UIWebView委托属性设置为nil

Sta*_*ley 3 iphone cocoa objective-c

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

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

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

希望知识渊博的人可以提供一些提示.

(非弧设置)

Eph*_*era 6

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

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

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

  • 是的,那是最好的地方. (2认同)