Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone @objective-c中的选择器未按预期运行_Iphone_Objective C_Callback_Selector - Fatal编程技术网

Iphone @objective-c中的选择器未按预期运行

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

我有点困惑,我已经为此工作了几个小时,在谷歌上搜索,没有任何真正的线索。我想使用@selector在objective-c中为我的iPhone应用程序创建一个回调

第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");
   }
}
第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
应该会给您一个语法错误。不能在其他方法中定义方法。