是否有任何方式向特定方法的「客戶端」指示閉包參數將被保留?Swift指示保留了閉包參數
例如,具有下面的代碼:
import Foundation
typealias MyClosureType =() -> Void
final class MyClass {
private var myClosure: MyClosureType?
func whatever(closure: MyClosureType?) {
myClosure = closure
}
}
任何人都可以開始使用這個類,以及將關閉該方法whatever
沒有關於它是否實際上是被保留或沒有任何想法。哪個容易出錯,並可能導致內存泄漏。
例如,「客戶」做這樣的事情,會被永遠不會釋放
final class MyDummyClient {
let myInstance = MyClass()
func setUp() {
myInstance.whatever {
self.whateverHandler()
}
}
func whateverHandler() {
print("Hey Jude, don't make it bad")
}
}
這就是爲什麼我想知道是否有什麼辦法可以防止這種類型的錯誤。某些類型的參數,我可以添加到我的方法whatever
的定義中,它向客戶提供了關於需要弱化以避免泄漏的提示