由于在 iOS5 上使用 CATiledLayer 和 Core Data 导致的崩溃错误
我正在使用 CATiledLayer 渲染 NSManagedObjects。 但你知道,CATiledLayer 在后台线程中渲染对象。这使我的应用程序在 iOS5 上崩溃
我知道我应该为每个线程使用单独的 NSManagedContext 但这种方式会使性能变差。 (因为我必须更频繁地保存 NSManagedContext 以将数据传输到其他线程)。
你们知道解决我的问题的更好方法吗?请帮忙!!!
抱歉我的英语不好!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
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.