Сообщение iphone приводит к "непризнанному селектору, отправленному экземпляру..."

Чтобы сделать это коротко, я регистрирую следующий NSNotification прослушиватель в ClassAviewDidLoad):

[[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:.