我有点困惑,我一直在这个小时工作,并没有任何真正的潜在客户。我想在使用@选择器的iPhone应用程序的objective-c中创建一个回调函数。@selector在objective-c中表现不如预期
第1类:
- (void) someMethod {
// create selector
SEL successCallback = @selector(successMethod);
// call some service with caller and selector
[class2 dispatchSomeEvent:self callback:successCallback];
// here's the call back method
- (void) successMethod {
NSLog(@"Callback success");
}
}
二级:
// some event
- (void) dispatchSomeEvent:(id) caller selector:(SEL) successCallback {
// catch the event and execute callback
if ([caller respondsToSelector:successCallback]) {
[caller successCallback];
}
}
有条件respondsToSelector将传递,但是,从下一行的回调将失败。但是,如果我这样做:
// catch the event and execute callback
if ([caller respondsToSelector:successCallback]) {
[caller successMethod];
}
因此而不是使用我经过选择的,我直接的方法名称型...和它的作品!
我得到的错误是这样的:
无法识别的选择发送到实例 0x6c37f70
这到底是怎么回事?
在此先感谢!
编译器应该喷涌时,来电者并不successMethod回应警告。 – bbum 2010-08-01 20:48:16
如果此代码是逐字记录的,回调函数'successMethod'应该会给你一个语法错误。您不能在其他方法中定义方法。 – JeremyP 2010-08-02 08:04:56