私のiOSアプリケーションでは、CoreData変更の通知リスナーとしてAppDelegateを登録しました。このコードで:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(mergeChangesFromContextDidSaveNotification:)
name:NSPersistentStoreDidImportUbiquitousContentChangesNotification
object:[self persistentStoreCoordinator]];
また、mergeChangesFromContextDidSaveNotificationメソッドは、更新があるたびに正しく呼び出されます。
ただし、このメソッド内で、別の操作を実行するためにNSTimerを呼び出そうとしています。
- (void)mergeChangesFromContextDidSaveNotification:(NSNotification *)notification {
NSTimer *t =[NSTimer scheduledTimerWithTimeInterval:10.0
target:self
selector:@selector(mergeCoreDataFromCloud:)
userInfo:nil
repeats:NO];
}
}
重要なのは、タイマーによって起動される必要があるmergeCoreDataFromCloud:が呼び出されることはないということです。これは署名です:
-(void)mergeCoreDataFromCloud:(NSTimer*)timer {
// never called...
}
私は開発の初期段階にあり、コードは完全ではなく、タイマーが開始されない理由を知りたいだけであることに注意してください。スレッドと関係があると思いますが、推測はできません...
ありがとう