Когда закрытие использования можно избежать сильный опорного цикла с помощи weak
или unowned
для захвата списка.
1006 * Я знаю, что эта функция также названо закрытие.Так что я полагаю, что функция также захватывает значения из контекста.
Как можно избежать строгого ссылочного цикла для функции?
Коды ниже
class Person {
var name: String?
func printInfo() {
print(self.name ?? "nil")
}
deinit {
print("\(self.name ?? "") is deinitialized.")
}
}
var p1: Person? = Person()
p1?.name = "Person1"
var printFunction = p1?.printInfo
p1 = nil
Не печатать ни одного сообщения
...
p1 = nil
printFunction = nil
print Person1 is deinitialized.
У кого-нибудь есть решение по этому делу?В закрытии случае у нас есть weak
, unowned
список захвата.