Уведомление iphone приводит к "нераспознанному селектору, отправленному экземпляру..."
Короче говоря, я регистрирую следующее NSNotification
слушатель в ClassA
(в viewDidLoad
):
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playSong) name:@"playNotification" object:nil];
У меня есть селектор объявлен в ClassA.h
:
- (void)playSong:(NSNotification *) notification;
И реализация идет следующим образом:
- (void)playSong:(NSNotification *) notification {
NSString *theTitle = [notification object];
NSLog(@"Play stuff", theTitle);
}
В ClassB
(в tableView:didSelectRowAtIndexPath:
метод) у меня есть:
NSInteger row = [indexPath row];
NSString *stuff = [playlistArray objectAtIndex:row];
[[NSNotificationCenter defaultCenter] postNotificationName:@"playNotification" object:stuff];
Все заканчивается сообщением об ошибке:
"нераспознанный селектор отправлен на экземпляр"
перед playSong
метод вызывается.
Кто-нибудь может помочь мне здесь? Что я забываю при публикации уведомления от одного контроллера к другому?
1 ответ
Решение
Ваш @selector
нужен :
символ, если это взять аргумент:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playSong:) name:@"playNotification" object:nil];
Экземпляры ClassA
не отвечать на playSong
селектор, но они отвечают на playSong:
селектор.