iOS - Слабый var все еще может вызвать сохранение цикла?
Вот мой настоящий код:
@IBOutlet weak var contentTextView: SmartTextView! {
didSet {
self.contentTextView.onDidBeginEditing = {
$0.layer.borderColor = Util.green.CGColor
}
self.contentTextView.onDidEndEditing = {
$0.layer.borderColor = Util.gray.CGColor
}
self.contentTextView.layer.borderWidth = 1 / Util.screenScale
self.contentTextView.layer.borderColor = Util.gray.CGColor
self.contentTextView.minHeight = 148
self.contentTextView.maxHeight = 148
self.contentTextView.onChange = { [unowned self] text in
var content = text.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "\n\t"))
self.contentLenthLabel.text = "\(self.MAX_CONTENT - count(content))"
}
}
}
Если я удалю [unowned self]
Заявление, я вижу проблему сохранения цикла в инструментах.
Является ли КВО или что-то еще, сделав слабую переменную, все же может вызвать сохранение цикла?
1 ответ
Решение
weak
ссылка - красная сельдь; это не имеет ничего общего с историей здесь. Без [unowned self]
, вы сохраняете эту точку зрения, и эта точка зрения сохраняет вас. Это цикл сохранения:
UIViewController сохраняет свою точку зрения
Вид сохраняет свои подпредставления; Одним из таких подпредставлений является SmartTextView
SmartTextView сохраняет
onChange
функцияФункция сохраняет
self
(UIViewController), если вы не говоритеunowned self
,