ARC + Retain Cycle

理解程式是如何管控記憶體並且正確地操作物件,可以避免記憶體的浪費。

課程文件

如何找Retain Cycle

方法一:使用 deinit,確認物件是否被消滅

/// 人物
class People {
    let name: String = "John"
    var macbook: Macbook? = nil
    deinit {
        print("\(name) deinit.")
    }
}

/// 筆電
class Macbook {
    let name: String = "Macbook"
    var owner: People? = nil
    deinit {
        print("\(name) deinit.")
    }
}

方法二:使用 Xcode 的 Debug Memory Graphic

Debug Memory Graphic

如何解決Retain Cycle

情境一: 兩個類別互相擁有,加上weak即可!!!

情境二:Delegate和Protocol,加上weak即可!!!

情境三:被擁有的Closure,定義時請使用weak self即可!!!

Last updated

Was this helpful?