iphone通知导致“无法识别的选择器发送到实例...”

时间:2010-12-23 23:58:21

标签: iphone objective-c ios nsnotificationcenter

为了简短起见,我在NSNotificationClassA)注册了以下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 个答案:

答案 0 :(得分:41)

如果要提出争论,您的@selector需要一个:字符:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playSong:) name:@"playNotification" object:nil];

ClassA的实例会回复playSong选择器,但他们会回复playSong:选择器。