我正在使用 CATiledLayer 来渲染 NSManagedObjects。但是你知道,CATiledLayer 在后台线程中渲染对象。这使我的应用程序在 iOS5 上崩溃
我知道我应该为每个线程使用单独的 NSManagedContext ,但是这样会使性能变差。(因为我必须更频繁地保存 NSManagedContext 才能将数据传输到其他线程)。
你们知道解决我的问题的更好方法吗?请帮忙!!!
对不起我的英语不好!
我正在使用 CATiledLayer 来渲染 NSManagedObjects。但是你知道,CATiledLayer 在后台线程中渲染对象。这使我的应用程序在 iOS5 上崩溃
我知道我应该为每个线程使用单独的 NSManagedContext ,但是这样会使性能变差。(因为我必须更频繁地保存 NSManagedContext 才能将数据传输到其他线程)。
你们知道解决我的问题的更好方法吗?请帮忙!!!
对不起我的英语不好!
NSManagedObjectContext 不是线程安全的,NSManagedObjects 也不是。您应该在后台线程上创建一个 MOC,传入任何ID(这是线程安全的),并将它们加载到后台线程上下文中。
更新:
一种替代方法是创建普通的旧 obj-c 对象,甚至只是一个常规的 NSDictionay,其中包含必要的数据并将这些数据传递给后台线程。因此,在您的 MO 被填充后,创建一个 POOCO,复制必要的数据,并将其传递给您的后台线程进行处理。这将避免磁盘访问。