Сообщение 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:
.