iPhone-responsedToSelector返回NO,但方法已实现



我有一个声明并实现这个的类:

- (void) callbackme:(OneClass*)p1 error:(NSString*)errStr {
}

并且调用一个实例方法:

[self.obj oneAction:@"a string" sendAnswerToObject:self]; // obj is a custom class

在自定义类的一个Action方法中,我有:

- (void) oneAction:(NSString*)p1 sendAnswerToObject:(id)listener {
     if (listener != nil && ![listener respondsToSelector:@selector(callbackme::)]) 
             NSLog(@"Listener does not respond to selector 'callbackme:error:'");
}

NSLog被触发了,我不明白为什么?

侦听器必须是一个id,因为它可以是任何类的任何对象实例。

您的if应该是

if (listener != nil && ![listener respondsToSelector:@selector(callbackme:error:)]

就像您创建的日志一样。

最新更新