Swift Closure retain cycle

retain cycle 發生在 reference type中,如class, closure, 因為物件互為強參考會造成記憶體無法釋放到最後可能致使App崩潰

參考Apple documentation 自動參考計數Automatic Reference Counting(ARC)

在Class HTMLElement實例中使用() -> String Closure關係圖 — Apple doc

小結論,在使用closure時透過weak(弱參考optional) unownd(無主參考non-optional)來處理retain cycle的問題

順帶一提:lazy修飾字,是因為closure中有使用self 也就是這個類的本身,他必須先完成建構才能使用,而lazy會在建構完後,並在”初次”使用時才會執行,也只會建構一次。

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.