Swift_unknowUnowned crash

在使用 Swift 開發的時候,為了避免 closure memory leak 我們會在capture list 當中定義 [unowned self] 或是 [weak self] ,而平常都是使用 unowned self 居多,也比較方便簡潔。

一般使用沒問題,但是當你的 class 在 closure 完成之前有可能會被回收掉(例如 pop view controller)的情況就不適合這樣使用,這會導致unknowUnowned crash,因此在 class 可能被回收的情況之下我們必須改由 [weak self] 的寫法如下:

{ [weak self] in 
if let strongSelf = self {
//do something
strongSelf.titleLabel = ""
}
}

又或者

{ [weak self] in 
guard self != nil else { return }
//always force unwarp self
self!.titleLabel = ""
}

總之看起來好像都蠻醜的..

One clap, two clap, three clap, forty?

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