Есть ли способ указать «клиенту» определенного метода, что параметр закрытия будет сохранен?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")
}
}
Вот почему я хотел бы знать, если есть способ предотвратить этот тип ошибок. Некоторый тип paramater, который я мог бы добавить к определению моего метода whatever
, который дает клиенту подсказку о необходимости ослабления во избежание утечек.