Возможно, проблема в том, что уведомление отправлено (и, следовательно, получено) в другом потоке, чем основной поток. Только в главном потоке вы сможете обновлять элементы пользовательского интерфейса (например, метку).
См. Мой ответ на этот вопрос , чтобы узнать о темах и NSNotifications.
Используйте что-то вроде:
NSLog(@"Code executing in Thread %@",[NSThread currentThread] );
для сравнения вашего основного потока с тем, где выполняется ваш recieveNotifcation: метод.
Если вы отправляете уведомление в потоке, который не является основным, решение может заключаться в том, чтобы транслировать ваши уведомления в основном потоке следующим образом:
//Call this to post a notification and are on a background thread
- (void) postmyNotification{
[self performSelectorOnMainThread:@selector(helperMethod:) withObject:Nil waitUntilDone:NO];
}
//Do not call this directly if you are running on a background thread.
- (void) helperMethod{
[[NSNotificationCenter defaultCenter] postNotificationName:@"SOMENAME" object:self];
}
Если вы заботитесь только об обновлении метки в основном потоке, вы можете выполнить эту операцию в основном потоке, используя что-то похожее на:
dispatch_sync(dispatch_get_main_queue(), ^(void){
[label setText:@"Success!"];
});
Надеюсь, это было полезно!