SWIFT中最常見的內(nèi)存泄漏陷阱
如果您有內(nèi)存循環(huán),它將在調(diào)試器中向您顯示警告:
如果確實有一個(或通常是一堆),則表示您有一個泄漏的物體。
您如何預(yù)防呢?
就像在關(guān)閉的第一行中添加[unowned self]
一樣簡單!
而已! 它將阻止泄漏。
之所以會發(fā)生內(nèi)存泄漏,是因為Swift中的閉包必須捕獲作用域(即{}之間的所有東西)以及您引用的任何self.
?它必須保留指向該對象的強大指針,并且即使整個viewController可能已被釋放,也永遠不會釋放它。
[unowned self]
是您在Swift閉包中的朋友!
更新:正如中型讀者所指出的那樣,也可以使用[weak self]
代替[unowned self]
?,這也將阻止泄漏?。 但是,Tudor Andrei Marinescu指出了一些重要的考慮因素:文章來源:http://www.zghlxwxcb.cn/news/detail-730594.html
unowned
和weak
之間的區(qū)別在于,?weak
被聲明為可選,?unowned
則不是。 通過聲明它是weak
您可以處理某些情況下它在閉包內(nèi)部可能為零的情況。 如果您嘗試訪問一個恰好為nil的unowned
變量,它將使整個程序崩潰。 因此,只有當您肯定變量在閉包周圍時將始終存在時,才使用unowned
文章來源地址http://www.zghlxwxcb.cn/news/detail-730594.html
到了這里,關(guān)于SWIFT中最常見的內(nèi)存泄漏陷阱的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!