iOS ARC中如何正确使用dealloc进行资源释放?
- 内容介绍
- 文章标签
- 相关推荐
本文共计290个文字,预计阅读时间需要2分钟。
iOS开发中,ARC(自动引用计数)时代,通常不需要手动实现dealloc函数。然而,在某些特定情况下,如页面关闭时,需要手动释放ViewController的某些资源。
众所周知,iOS开发的时候,使用ARC的话,dealloc函数是不需要实现的,写了反而会出错。
但有些特殊的情况,dealloc函数还是需要的。
比如,在画面关闭的时候,需要把ViewController的某些资源释放,
在viewDidDissppear不一定合适,viewDidUnload一般情况下只在memory warning的时候才被调用。
不用ARC的情况下,我们自然会想到dealloc函数。
其实ARC环境下,也没有把dealloc函数禁掉,还是可以使用的。只不过不需要调用[supper dealloc]了。
举个例子,画面上有UIWebView,它的delegate是该画面的ViewController,在WebView载入完成后,需要做某些事情,比如,把indicator停掉之类的。
如果在WebView载入完成之前关闭画面的话,画面关闭后,ViewController也释放了。但由于WebView正在载入页面,而不会马上被释放,等到页面载入完毕后,回调delegate(ViewController)中的方法,由于此时ViewController已经被释放,所以会出错。
本文共计290个文字,预计阅读时间需要2分钟。
iOS开发中,ARC(自动引用计数)时代,通常不需要手动实现dealloc函数。然而,在某些特定情况下,如页面关闭时,需要手动释放ViewController的某些资源。
众所周知,iOS开发的时候,使用ARC的话,dealloc函数是不需要实现的,写了反而会出错。
但有些特殊的情况,dealloc函数还是需要的。
比如,在画面关闭的时候,需要把ViewController的某些资源释放,
在viewDidDissppear不一定合适,viewDidUnload一般情况下只在memory warning的时候才被调用。
不用ARC的情况下,我们自然会想到dealloc函数。
其实ARC环境下,也没有把dealloc函数禁掉,还是可以使用的。只不过不需要调用[supper dealloc]了。
举个例子,画面上有UIWebView,它的delegate是该画面的ViewController,在WebView载入完成后,需要做某些事情,比如,把indicator停掉之类的。
如果在WebView载入完成之前关闭画面的话,画面关闭后,ViewController也释放了。但由于WebView正在载入页面,而不会马上被释放,等到页面载入完毕后,回调delegate(ViewController)中的方法,由于此时ViewController已经被释放,所以会出错。

