gpt4 book ai didi

ios - 为什么每次更改单元格对应的对象的值时都会调用我的 `configureCell:` 方法? (但我不保存它。)

转载 作者:行者123 更新时间:2023-11-28 22:30:45 25 4
gpt4 key购买 nike

我正在制作一个应用程序,当您选择一个单元格时,您会被转到一个新的阅读 View 。您点击的单元格对应于核心数据存储中的一个对象(通过 NSFetchedResultsController),并且该对象被设置为正在处理的 View 的 article 属性的值继续。

到达那里后,我会在用户阅读文章时移动他们在文章中的位置。 (所以我通过 article.position = ... 更改了 articleposition 属性)

然而,这种情况在他们阅读时非常频繁地发生,通常是数百次,并且每次 NSFetchedResultsController 都将更改检测为更新,然后调用 configureCell:,这然后运行该单元的一堆配置。由于这个 configureCell: 方法被调用得如此频繁(我只希望在他们返回到 TableView 时调用它,因为那是唯一需要更新的时间)它导致了相当大的性能损失.

不过我不明白为什么要调用它。我没有使用 NSManagedObjectContext 将数据保存到 Core Data 存储中,那么它为什么要关心呢?我只在 viewWillDisappear 被调用时调用它,表明他们正在离开 View ,可能会返回到我想要的 TableView !

基本上,我如何让它只在需要时/当我要求它将数据写入 Core Data 时才调用 configureCell:?它按原样调用了数百次。

最佳答案

如果您不将对 Core Data 对象的更改持久化到磁盘上,这无关紧要;对 Core Data 管理对象的更改是一个更改,因此 NSFetchedResultsController 承认它。

您可以通过在 viewWillDisappear: 中将 NSFetchedResultsController 的委托(delegate)设置为 nil 并在中将其设置回 self 来避免更新不可见的 TableView viewDidAppear:。此外,在设置委托(delegate)后添加 performFetch:

“隐藏的”NSFetchedResultsController 仍将接收对前台 View 中的文章对象所做的所有更改,但会忽略它们,因为它没有委托(delegate)。

当返回到文章 ListView 时,它将再次拥有一个委托(delegate),并且能够对所有更改使用react。

关于ios - 为什么每次更改单元格对应的对象的值时都会调用我的 `configureCell:` 方法? (但我不保存它。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17537602/

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