OSDN Git Service

メインスレッド外でデータが更新されたらログを吐くようにした
authormasakih <masakih@users.sourceforge.jp>
Sun, 11 May 2014 00:38:51 +0000 (09:38 +0900)
committermasakih <masakih@users.sourceforge.jp>
Sun, 11 May 2014 00:38:51 +0000 (09:38 +0900)
KCD/HMCoreDataManager.m

index d545025..2fd781a 100644 (file)
                           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;
 }
        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