gpt4 book ai didi

iOS - 弱变量仍然会导致保留周期吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:57:48 26 4
gpt4 key购买 nike

这是我的真实代码:

@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] 语句,我会在 Instruments 中看到一个保留循环问题。

是 KVO 还是其他什么使得弱 var 仍然会导致保留循环?

最佳答案

weak 引用是一个转移注意力的问题;这与这里的故事无关。没有 [unowned self],您保留了这个 View ,这个 View 也保留了您。这是一个保留周期:

  • UIViewController 保留其 View

  • View 保留其 subview ;其中一个 subview 是 SmartTextView

  • SmartTextView保留onChange函数

  • 函数保留 self(UIViewController),除非您说 unowned self

关于iOS - 弱变量仍然会导致保留周期吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32551677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com