2012-11-05 171 views
3

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

我的问题是:如果UIWebView是用IB的代理指向文件所有者,它是一个viewController。 UIWebView及其超级视图在执行过程中从不处理,委托需要设置为零?

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

希望有人能够提供一些提示。

(非弧形设置)

+0

只需在您的dealloc方法中将其设置为零即可。现在可能不会解除分配,但是如果/当您更改应用程序并且您不必担心它时,它可能会在将来。 – Rog

+0

你是指viewController中的dealloc方法吗? – Stanley

回答

5

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

更紧迫的问题是如果应用程序收到低内存警告。如果收到内存警告并且UIWebView已卸载且代理未设置为零,那么最终可能会在后台发生内存泄漏,具体取决于UIWebView设置/删除代理时的内存泄漏情况。

如果您将委托设置为无销毁,则当UIWebView检测到它的委托设置为零时,将处理任何需要发生的事件。如果你不这样做,并且实例被不可预知地破坏(比如由于内存不足的警告),那么一旦警告消失,装载将再次发生,无论采取什么程序来设置UIWebView的代表将是运行两次,没有在两者之间发生的“关闭”程序。鉴于他们坚持认为你的代表没有破坏,我想这表现为内存泄漏或类似的阴险。

+0

感谢您的回答... – Stanley

+1

我可以在UIWebView的视图控制器的dealloc方法吗? – Stanley

+2

是的,这是最好的地方。 – Ephemera