From: masakih Date: Sun, 11 May 2014 00:38:51 +0000 (+0900) Subject: メインスレッド外でデータが更新されたらログを吐くようにした X-Git-Tag: 1.0beta8~7 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=f56eeda3dde019fbf72e7d89f42283c76265f197;p=kcd%2FKCD.git メインスレッド外でデータが更新されたらログを吐くようにした --- diff --git a/KCD/HMCoreDataManager.m b/KCD/HMCoreDataManager.m index d5450258..2fd781a8 100644 --- a/KCD/HMCoreDataManager.m +++ b/KCD/HMCoreDataManager.m @@ -30,6 +30,11 @@ name:NSApplicationWillTerminateNotification object:NSApp]; + [nc addObserver:self + selector:@selector(managedContextObjectDidChange:) + name:NSManagedObjectContextObjectsDidChangeNotification + object:[defaultManager managedObjectContext]]; + objc_setAssociatedObject(self, "defaultManager", defaultManager, OBJC_ASSOCIATION_RETAIN); return defaultManager; } @@ -222,17 +227,22 @@ NSPersistentStoreCoordinator *psc = [moc persistentStoreCoordinator]; if(![psc isEqual:[self persistentStoreCoordinator]]) return; -// if([NSThread isMainThread]) { -// [self.managedObjectContext mergeChangesFromContextDidSaveNotification:notification]; -// } else { -// dispatch_sync(dispatch_get_main_queue(), ^{ -// [self.managedObjectContext mergeChangesFromContextDidSaveNotification:notification]; -// }); -// } + if([NSThread isMainThread]) { + [self.managedObjectContext mergeChangesFromContextDidSaveNotification:notification]; + } else { + dispatch_sync(dispatch_get_main_queue(), ^{ + [self.managedObjectContext commitEditing]; + [self.managedObjectContext mergeChangesFromContextDidSaveNotification:notification]; + [self.managedObjectContext commitEditing]; + }); + } +} + ++ (void)managedContextObjectDidChange:(NSNotification *)notification +{ + if([NSThread isMainThread]) return; - [self.managedObjectContext performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:) - withObject:notification - waitUntilDone:YES]; + NSLog(@"Read only managed context object did change in NOT main thread. -> \n %@", [notification userInfo]); } #pragma mark - abstruct