gpt4 book ai didi

ios - 在嵌套闭包中声明 weak

转载 作者:行者123 更新时间:2023-11-28 05:46:54 25 4
gpt4 key购买 nike

在接下来的 0.5 秒延迟期间,tableViewManager 可能会被释放。我想确保在嵌套闭包内与 textView 交互时 textView 是弱的。我该怎么做?

tableViewManager.textViewDidBeginEditing = { [weak self] textView, indexPath in
asyncAfter(seconds: 0.5) {
let value = textView.tag // touched here
self?.tableView.scrollToRow(at: indexPath, at: .top, animated: true)
}
}

编辑:请停止提供有关如何让自己变得虚弱的答案。这个问题不是在问“ self ”。 TextView 。 teeeeexttt viiieeewww。

最佳答案

您可以使用常规语法:

tableViewManager.textViewDidBeginEditing = { [weak self] textView, indexPath in
// textView is strong here
asyncAfter(seconds: 0.5) { [weak textView] in
// textView is weak here
let value = textView?.tag // touched here
self?.tableView.scrollToRow(at: indexPath, at: .top, animated: true)
}
}

编辑:

尝试使用容器来避免编译器错误:

class WeakLink<T: AnyObject> {
weak var value: T?

init(_ value: T) {
self.value = value
}
}

tableViewManager.textViewDidBeginEditing = { [weak self] textView, indexPath in
let weakTextView = WeakLink(textView)
asyncAfter(seconds: 0.5) {
// textView is weak here
let textView = weakTextView.value
let value = textView?.tag // touched here
self?.tableView.scrollToRow(at: indexPath, at: .top, animated: true)
}
}

关于ios - 在嵌套闭包中声明 weak,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54309569/

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