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則代表賦值失敗。