我在我的代碼是這樣的:核心數據,通知在主線程
- (id)init
{
self = [super initWithNibName:nibName bundle:nil];
if (self) {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(userDataDidUpdate)
name:NSManagedObjectContextDidSaveNotification
object:[UserData managedObjectContext]];
}
return self;
}
- (void)userDataDidUpdate
{
// notification received...
}
,並在其他類(CoreData經理)我這樣做是這樣的:
[[UserData managedObjectContext] performBlock:^{
NSError *error;
if (![[UserData managedObjectContext] save:&error])
{
// handle error
}
isSyncing = NO;
[[NSNotificationCenter defaultCenter] postNotificationName:NDUserDataSyncDidUpdateLocalData object:nil];
}];
的問題是我發送通知在託管的objectContext的performBlock,它不是主線程。我如何在主線程中的performBlcok內發送通知?
謝謝
沒有使用'NSNotificationCenter'來進行跨線程通知。如果您在一個線程中發帖,所有其他線程都會收到通知。 – rckoenes
@rckoenes但蘋果表示我們應該在同一個線程中發佈並接收通知,不是嗎?我可以在後臺線程中發佈通知並在主線程中接收它嗎?如果是的話,這是一個很好的做法? – samir