大前端开发swift编程开发swift

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

2018-11-11  本文已影响2人  link_hui

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

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


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

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


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


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


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

上一篇 下一篇

猜你喜欢

热点阅读