由于在 iOS5 上使用 CATiledLayer 和 Core Data 导致的崩溃错误

发布于 2024-12-12 00:00:19 字数 243 浏览 0 评论 0 原文

我正在使用 CATiledLayer 渲染 NSManagedObjects。 但你知道,CATiledLayer 在后台线程中渲染对象。这使我的应用程序在 iOS5 上崩溃

我知道我应该为每个线程使用单独的 NSManagedContext 但这种方式会使性能变差。 (因为我必须更频繁地保存 NSManagedContext 以将数据传输到其他线程)。

你们知道解决我的问题的更好方法吗?请帮忙!!!

抱歉我的英语不好!

I am using CATiledLayer to render NSManagedObjects.
But you know, CATiledLayer render objects in background threads. This make my app crash on iOS5

I know that I should use separated NSManagedContext for each of threads but this way make performance get bad. (because I have to save the NSManagedContext more often to transfer data to other threads).

Do you guys know the better way to work around my problem? Please help!!!

Sorry for my poor English!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

灰色世界里的红玫瑰 2024-12-19 00:00:19

NSManagedObjectContext 不是线程安全的,NSMangedObjects 也不是。您应该在后台线程上创建一个 MOC,传入任何 ID(线程安全),并将它们加载到后台线程上下文中。

更新:

一种替代方法是创建普通的旧 obj-c 对象,甚至只是一个常规的 NSDictionay,其中包含必要的数据并将其传递给后台线程。因此,填充 MO 后,创建一个 POOCO,复制必要的数据,并将其传递给后台线程进行处理。这将避免磁盘访问。

NSManagedObjectContext is not thread safe, nor are NSMangedObjects. You should create a MOC on the background thread, pass in any IDs (which ARE thread safe), and load them on the background thread context.

UPDATE:

One alternative is to create plain old obj-c objects, or even just a regular NSDictionay, which contains the necessary data and pass those to the background thread. So after your MO is populated, create a POOCO, copy in the necessary data, and pass that to your background thread for processing. This will avoid disk access.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文