在iOS開發(fā)中焰檩,有時候我們?yōu)榱苏{(diào)試我們寫的頁面代碼是否有內(nèi)存泄漏副签,會在ViewController的釋放方法中添加一個斷點,在退出的時候看看是否會執(zhí)行到瑞佩。
Swift語言,在ViewController添加一個空的deinit方法坯台,退出頁面的時候炬丸,卻發(fā)現(xiàn)斷點是不生效的。
碰到這種情況蜒蕾,以為是發(fā)生內(nèi)存泄漏了稠炬。卻怎么也排查不到原因。
由于項目是混編的咪啡,無奈之下再試試Objective-C中是否有問題首启,因為之前也是一直這么做的,卻發(fā)現(xiàn)Objective-C中一個空的dealloc方法撤摸。退出頁面的時候毅桃,斷點是生效的。
然而准夷,在deinit方法中增加一個打印語句钥飞,設(shè)置的斷點就能夠斷住了。
再查資料衫嵌,發(fā)現(xiàn)是Swift編譯有優(yōu)化读宙,對空的deinit方法不生效。要想deinit方法中的斷點生效楔绞,必須寫一個執(zhí)行語句结闸,比如增加一個print打印方法。