Iphone @objective-c中的选择器未按预期运行
我有点困惑,我已经为此工作了几个小时,在谷歌上搜索,没有任何真正的线索。我想使用@selector在objective-c中为我的iPhone应用程序创建一个回调 第1类:Iphone @objective-c中的选择器未按预期运行,iphone,objective-c,callback,selector,Iphone,Objective C,Callback,Selector,我有点困惑,我已经为此工作了几个小时,在谷歌上搜索,没有任何真正的线索。我想使用@selector在objective-c中为我的iPhone应用程序创建一个回调 第1类: - (void) someMethod { // create selector SEL successCallback = @selector(successMethod); // call some service with caller and selector [class2 dis
- (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");
}
}
第2类:
// 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
这是怎么回事
提前谢谢 您应该使用
-performSelector
方法调用选择器:
if ([caller respondsToSelector:successCallback]) {
[caller performSelector:successCallback];
}
编译器应该发出警告,指出调用方没有响应successMethod。如果此代码是逐字的,则回调
successMethod
应该会给您一个语法错误。不能在其他方法中定义方法。