gpt4 book ai didi

objective-c - 核心数据 : Freeze at the end of a save

转载 作者:行者123 更新时间:2023-11-28 20:34:28 24 4
gpt4 key购买 nike

我目前有一个带有标签栏的 iPhone 项目。在标签栏上有两个 View 。这两个 View 都将数据加载或保存到 Core Data 数据库(这两个 View 都启动了一种从 Web 服务收集数据并将其保存在数据库中的方法)。加载 View 时,它会从填充 View 中表的数据库中加载数据。如果我运行该应用程序并单击选项卡栏中的第二个 View ,第一个 View 仍在从 Web 服务加载数据并将其插入到单独线程上的数据库中。这很好,但是一旦第一个 View 完成将所有数据从 web 服务加载到数据库中,只有当第二个 View Controller 正在从数据库加载数据时,它才会卡住两个 View Controller 。

控制台没有错误,xcode 也没有指示有任何错误。我的所有进程都在不同的线程上工作,因此主线程卡住没有问题。从 Web 服务中提取数据并将其保存到数据库是一种方法,在该方法的末尾我放置了 NSLog(@"View Controller 1 Save Complete")。一旦这被调用并且第二个 View Controller 仍在加载数据,它就会卡住。整个应用程序没有响应(没有任何效果)。

我查看了其他 SO 问题的信息,它建议我在每次提取或插入时声明一个新的 NSManagedObjectContext,我已经这样做了,但它并没有解决问题。

如果有人知道发生了什么或者您想了解更多信息,请告诉我。

编辑:我正在使用 Xcode 4.5 和 IOS 6 模拟器。这是一周前发布的新 IOS 的测试版。我知道这不是错误,因为我在开始使用测试版之前遇到过这个问题。

最佳答案

我过去遇到过的一种可能性是,尝试在与创建它的线程不同的线程上与 MOC 交互。如果您尝试进行并发,则可能会发生这种情况,并且在与 MOC 对话时,您必须始终非常小心地知道自己在哪个线程上。例如,对于异步事物,你的回调可能在与你想象的不同的线程上执行(即 viewDidLoad 发生在主线程上,所以如果你在那里创建一个 MOC,你以后不能从不同的线程使用它)。

关于objective-c - 核心数据 : Freeze at the end of a save,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11068634/

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