gpt4 book ai didi

ios - 如果 UITableViewController 在 performBatchUpdates 完成处理程序中捕获自身,是否会导致保留周期?

转载 作者:搜寻专家 更新时间:2023-11-01 06:51:08 24 4
gpt4 key购买 nike

假设我有一个 UITableViewController 子类,其中有一些功能,例如:

class MyTableVC: UITableViewController {
func doSomething() { ... }
}

然后我向它添加了一个调用 performBatchUpdates 的函数,它带有一个捕获自身的完成处理程序:

    func updateStuff() {
tableView.performBatchUpdates(someUpdates, completion: { _ in
self.doSomething()
}
}

是否存在创建保留循环的危险?如果是这样, View Controller 是否保证在回调中为非零?即,如果存在保留循环的可能性,我可以使用 [unowned self] 还是有必要使用 [weak self]

最佳答案

您的解决方案没有重大问题。 self 只会保留到批量更新完成,这很好。为了不使代码复杂化,我可能会做同样的事情。

通常情况下,仍然有 weakunowned 会更好一些,只是为了在整个项目中保持相似的代码风格。

如果您决定选择其中之一,weak 是这里唯一安全的选择。例如,当表执行更新操作时, View Controller 可能会从屏幕上移除并释放(机会确实很小但仍然存在),这将导致结果崩溃。

关于ios - 如果 UITableViewController 在 performBatchUpdates 完成处理程序中捕获自身,是否会导致保留周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56943359/

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