Swift 十三:析構(gòu)方法及內(nèi)存管理和可選鏈

1).析構(gòu)方法

析構(gòu)方法:對(duì)象的內(nèi)存被回收前夕,被隱式調(diào)用的方法。

主要用來(lái)執(zhí)行一些額外的操作。比如關(guān)閉文件、斷開(kāi)網(wǎng)絡(luò)、釋放對(duì)象持有的一些資源等。

class MyClass {
    
    deinit {
        
        print("銷毀")
    }
}

var temp : MyClass? = MyClass()

temp = nil

注意:父類的析構(gòu)方法會(huì)被子類自動(dòng)繼承,不需要子類管理。


2).swift的內(nèi)存管理

內(nèi)存管理是針對(duì)對(duì)引用類型(類),枚舉和結(jié)構(gòu)體等值類型不存在內(nèi)存管理。

內(nèi)存回收原則:當(dāng)沒(méi)有任何引用指向某個(gè)對(duì)象時(shí),系統(tǒng)會(huì)自動(dòng)銷毀該對(duì)象。

如何做到該原則:通過(guò)ARC技術(shù)。

關(guān)鍵字weak(弱引用)

weak var temp : MyClass? = MyClass()

weak修飾的引用 是可選類型

關(guān)鍵字unowned(弱引用):無(wú)主引用 不是可選類型

用weak和unowned來(lái)解決循環(huán)強(qiáng)引用的問(wèn)題


3)可選鏈

通過(guò)可選類型的變量,來(lái)請(qǐng)求調(diào)用屬性或者方法的快捷方式;

        var value : Int?
        
        value?.toIntMax()  //可選鏈語(yǔ)法

通過(guò)可選鏈得到的返回值,是可選Optional類型

可選鏈賦值操作也有返回值,可以通過(guò)返回值來(lái)判斷賦值操作是否成功。如果返回值為()或者Void類型,則為成功,如果返回值是nil則代表賦值失敗。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容