美文网首页
ARC与MRC混编修改方法

ARC与MRC混编修改方法

作者: Leon_Jiang | 来源:发表于2018-04-10 09:50 被阅读0次

    1 MRC项目加添ARC页面:MRC项目中添加ARC的文件,可以使用 -fobjc-arc 标记即可。


    wKiom1UGOZ_TJKNzAAMRX-Csm6Q966.png-wh_600x-s_122546553.png

    2 为MRC的程序添加-fno-objc-arc标记,表明在编译时,该文件使用MRC编译。


    wKioL1UGOp6xFp67AAD9FJZ3T2w069.png-wh_651x-s_1875112879.png

    3 众所周知,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已经被释放,所以会出错。(message sent to deallocated instance)
    解决办法是在dealloc中把WebView的delegate释放。
    -(void)dealloc {
    self.webView.delegate = nil;
    }

    相关文章

      网友评论

          本文标题:ARC与MRC混编修改方法

          本文链接:https://www.haomeiwen.com/subject/yqkghftx.html