这是我的真实代码:
@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]
语句,我可以在工具中看到保留周期问题。
KVO或其他什么东西使弱变量仍然会导致保留周期?
答案 0 :(得分:2)
weak
引用是红鲱鱼;它与这里的故事无关。如果没有[unowned self]
,您将保留此视图,此视图会保留您。这是一个保留周期:
UIViewController保留其视图
查看保留其子视图;其中一个子视图是SmartTextView
SmartTextView保留onChange
功能
除非您说self
,否则函数会保留unowned self
(UIViewController)。