ios - NSManagedObjectContext 已锁定

标签 ios core-data nsmanagedobject nsmanagedobjectcontext

我的应用程序中有两个线程在运行。

  • 在主线程中,我更新实体中键的值或从核心数据中获取一些行。
  • 在后台线程中,我从服务器下载数据。

但有时在更新/处理 [managedObjectContext executeFetchRequest:request error:&error]

上的核心数据时

……我明白了:

#0 0x34507c5c in semaphore_wait_signal_trap ()
#1 0x34507f58 in semaphore_wait_signal ()

#2  0x364d573a in pthread_mutex_lock ()
#3  0x35c91a2e in -[_PFLock lock] ()
#4  0x35c91a12 in -[NSPersistentStoreCoordinator lock] ()
#5  0x35c919e8 in -[NSManagedObjectContext(_NSInternalAdditions) lockObjectStore] ()
#6  0x35c90676 in -[NSManagedObjectContext executeFetchRequest:error:] ()

NSManagedObjectContext 是如何被锁定的?我能为此做什么?

最佳答案

锁是正常操作的一部分,不是问题的根源。

很可能,您在管理单独线程上的上下文时遇到了问题。确保为每个线程使用不同的上下文,并确保不在线程之间传递托管对象。确保在尝试从另一个线程访问一个线程上所做的更改之前合并上下文。

关于ios - NSManagedObjectContext 已锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7938136/

相关文章:

ios 7 展示了第一个带后退按钮的导航 Controller

ios - UIImageWriteToSavedPhotosAlbum 未保存

ios - google near by places api 不返回任何结果,关键词是我附近的生日地点并输入 court hall

ios - Objective -C 类问题

ios - 具有 bool 属性的 CoreData 实体被保存为 NSNumber 对象

ios - 在上下文之间传递objectID时未触发多对多故障

ios - 如果我以编程方式完成所有布局,是否需要启用 Base Internationalization?

ios - 使用通用模型和 privateQueueConcurrencyType 获取 CoreData

iphone - 使用核心数据存储对象

ios - 如何使用谓词从核心数据中获取偶数和奇数值