Уведомление 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);
}

В ClassBtableView: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: селектор.

Другие вопросы по тегам