是否有任何方式向特定方法的“客户端”指示闭包参数将被保留?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
的定义中,它向客户提供了关于需要弱化以避免泄漏的提示