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

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

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


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

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


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


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


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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,020评论 3 119
  • 本专题作为江苏er的大本营,主要录稿题材、内容如下: 1. 可以分享你在江苏这片土地上的吃、喝、玩、乐、行。欢迎种...
    婉君不走琼瑶风阅读 978评论 5 8