开发者

mergeChangesFromContextDidSaveNotification taking almost a minute

开发者 https://www.devze.com 2022-12-13 18:03 出处:网络
I have a managed object context in a separate thread that is creating a few hundred managed objects, and when it saves, the did save notification is passed to the main thread and my other context (on

I have a managed object context in a separate thread that is creating a few hundred managed objects, and when it saves, the did save notification is passed to the main thread and my other context (on the main thread) is updated:

In Thread

[ApplicationDelegate performSelectorOnMainThread:@selector(managedObjectContextDidSave:) 
                                      withObject:notification 
                 开发者_JAVA技巧                  waitUntilDone:NO];

The problem is that the merging is taking a very long time, sometimes 40-50 seconds, and this is locking up the main thread & UI. Is there any reason why it would take this long to update?

Edit

This appears to only happen if there is a fetched results controller that is currently displaying data that will be affected by the merging. Any ideas?


I am assuming that your NSFetchedResultsController has a NSFetchedResultsControllerDelegate which is having to handle lots of updates as a result of the merge. These updates will result in lots of activity within the table, which might be causing the lag.

What you might have to do is create a wrapper method which when called on the main thread temporarily removes the delegate from the NSFetchedResultsController, then invokes managedObjectContextDidSave, then refreshed the table, then reinstates the NSFetchedResultsControllerDelegate.

0

精彩评论

暂无评论...
验证码 换一张
取 消