gpt4 book ai didi

ios - 在启用后台的应用程序中启用、禁用 NSFetchedResultsController

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:08:45 27 4
gpt4 key购买 nike

我正在开发一个即使在后台也能接收数据的 VOIP/聊天应用程序。我需要在应用移至后台时禁用 NSFetchedResultsController 以防止后台 UI 更改。 我这样做 -

- (void)applicationWillResignActive
{
[super applicationWillResignActive];
self.fetchedResultsController.delegate = nil;
}

- (void)applicationDidBecomeActive
{
[super applicationDidBecomeActive];
self.fetchedResultsController.delegate = self.fetchResultControllerDelegate;
}

我注意到当回到前台时我不需要调用[self.tableView reloadData]。 (编辑:只是为了澄清 Core Data DB 在应用程序处于后台且 fetchedResultsController.delegate 为 nil 时更新了新数据)。在重新分配 fetchedResultsController.delegate 后,表格会立即自行更新。

  1. 是什么让它更新,fetchedResultsController 是否在重新分配时预先获取?
  2. 这种方法是否有任何缺陷会导致 tableViewfetchedResultsController 之间发生冲突?

谢谢

最佳答案

抓取结果 Controller 提供以下功能:

可选地监视关联的托管对象上下文中对象的更改,并将结果集中的更改报告给它的委托(delegate)(参见“ Controller 的委托(delegate)”)。可选择缓存其计算结果,以便如果随后重新显示相同的数据,则不必重复工作(请参阅“缓存”)。因此, Controller 实际上具有三种操作模式,具体取决于它是否具有委托(delegate)以及是否设置了缓存文件名。

无跟踪:委托(delegate)设置为零。 Controller 只是提供对数据的访问,就像执行提取时一样。

仅内存跟踪:委托(delegate)为非零且文件缓存名称设置为零。 Controller 监视其结果集中的对象并更新部分和排序信息以响应相关更改。

完全持久跟踪:委托(delegate)和文件缓存名称是非零的。 Controller 监视其结果集中的对象并更新部分和排序信息以响应相关更改。 Controller 维护其计算结果的持久缓存。

关于ios - 在启用后台的应用程序中启用、禁用 NSFetchedResultsController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20782464/

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