swa*_*ner 6 deadlock core-data objective-c
我正在向用户显示包含一些数据的表格.一旦显示视图,我正在进行Web调用以查看是否有更新的数据(异步).当服务调用返回时,我想更新我的核心数据和视图.
不幸的是,我经常得到死锁,因为视图读取与服务调用写入相同的数据.我怎么解决这个问题?
当我在模拟器冻结时暂停模拟器时,等待的线程在以下位置等待:
后台(更新)线程:(psynch_cvwait)
[mainContext performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:)
withObject:notification
waitUntilDone:YES];
Run Code Online (Sandbox Code Playgroud)
主线程:( psynch_mutexwait)执行一个 filteredArrayUsingPredicate
非常感谢!
-mergeChangesFromContextDidSaveNotification:将阻止主线程.该调用将锁定两个NSManagedObjectContext实例,同时更新主要上下文并传入更改.
在iOS 5之前的应用中,这通常被认为是不可避免的.您可以通过更频繁,更小的保存来最小化它,但它仍然会发生.
iOS 5之前的应用程序唯一的另一个选择是告诉主要上下文,-reset:但这需要重新获取所有内容 - 另一个延迟.
| 归档时间: |
|
| 查看次数: |
3006 次 |
| 最近记录: |