我的应用程序中有两个线程在运行。
- 在主线程中,我更新实体中键的值或从核心数据获取一些行。
- 在后台线程中,我从服务器下载数据。
但有时在更新/处理核心数据时[managedObjectContext executeFetchRequest:request error:&error]
… I get:
#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 如何被锁定?为此我能做什么呢?
锁定是正常操作的一部分,并不是问题的根源。
最有可能的是,您在管理单独线程上的上下文时遇到问题。确保为每个线程使用不同的上下文,并确保不在线程之间传递托管对象。确保在尝试从另一个线程访问一个线程上所做的更改之前合并上下文。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)