美文网首页大前端开发swift编程开发swift
一个Swift中deinit方法中设置断点不生效的问题

一个Swift中deinit方法中设置断点不生效的问题

作者: link_hui | 来源:发表于2018-11-11 11:29 被阅读2次

    在iOS开发中,有时候我们为了调试我们写的页面代码是否有内存泄漏,会在ViewController的释放方法中添加一个断点,在退出的时候看看是否会执行到。

    Swift语言,在ViewController添加一个空的deinit方法,退出页面的时候,却发现断点是不生效的。


    碰到这种情况,以为是发生内存泄漏了。却怎么也排查不到原因。

    由于项目是混编的,无奈之下再试试Objective-C中是否有问题,因为之前也是一直这么做的,却发现Objective-C中一个空的dealloc方法。退出页面的时候,断点是生效的。


    然而,在deinit方法中增加一个打印语句,设置的断点就能够断住了。


    再查资料,发现是Swift编译有优化,对空的deinit方法不生效。要想deinit方法中的断点生效,必须写一个执行语句,比如增加一个print打印方法。


    参考:
    Deinit not called on a UIViewController, but Dealloc is

    相关文章

      网友评论

        本文标题:一个Swift中deinit方法中设置断点不生效的问题

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