ARC
- Swift 使用自動(dòng)引用計(jì)數(shù)(ARC)來跟蹤并管理應(yīng)用使用的內(nèi)存遏片。大部分情況下,這意味著在 Swift 語言中,內(nèi)存管理“仍然工作”,不需要自己去考慮內(nèi)存管理的事情摊求。當(dāng)實(shí)例不再被使用時(shí),ARC 會(huì)自動(dòng)釋放這些類的實(shí)例所占用的內(nèi)存刘离。
- 引用計(jì)數(shù)只應(yīng)用在類的實(shí)例。結(jié)構(gòu)體(Structure)和枚舉類型是值類型睹栖,并非引用類型硫惕,不是以引用的方式來存儲(chǔ)和傳遞的。
ARC如何工作
循環(huán)引用
- 通過弱引用或者無主引用來取代強(qiáng)引用
解決循環(huán)引用
- 弱引用和無主引用允許引用環(huán)中的一個(gè)實(shí)例引用另外一個(gè)實(shí)例野来,但不是強(qiáng)引用恼除。因此實(shí)例可以相互引用但是不會(huì)產(chǎn)生強(qiáng)引用環(huán)。
- 對(duì)于生命周期中引用會(huì)變?yōu)?nil 的實(shí)例曼氛,使用弱引用豁辉;對(duì)于初始化時(shí)賦值之后引用再也不會(huì)賦值為 nil 的實(shí)例,使用無主引用舀患。