关于dismissViewControllerAnimated值得注意的一点(deinit)
在使用dismissViewControllerAnimated退出當(dāng)前視圖的時候,理論上,該視圖對象就會被清除了,
也就是說會進(jìn)去當(dāng)前類的析構(gòu)函數(shù)deinit里面。但是有時候會發(fā)現(xiàn),dismiss之后并沒有進(jìn)入析構(gòu),往往就會因此出現(xiàn)一些奇怪的現(xiàn)象
有時候沒有出現(xiàn)問題,也不能代表,我們就可以不管它了。
之所以沒有進(jìn)入析構(gòu),是因為當(dāng)前對象包含了沒有釋放的委托存在。比如我這個視圖在打開之后,關(guān)聯(lián)了這個委托事件
這種情況下,你在dismiss之后無論如何也進(jìn)入不了析構(gòu),所以你需要在dismiss之前手動釋放掉所有的委托,具體到上面的例子,就是說在執(zhí)行dismissViewControllerAnimated之前必須加一行代碼
這樣就能在退出的時候釋放掉所有資源,避免釋放不干凈,內(nèi)存溢出等情況發(fā)生。
這應(yīng)該是swift中的一個bug,理論上應(yīng)該在退出視圖的時候,自動釋放掉所有資源,不應(yīng)該讓程序員來手動干這個事情。
轉(zhuǎn)載于:https://www.cnblogs.com/JimmyBright/p/4649953.html
總結(jié)
以上是生活随笔為你收集整理的关于dismissViewControllerAnimated值得注意的一点(deinit)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 平衡二叉查找树 AVL 的实现
- 下一篇: 03_运算符、键盘录入、流程控制