Objective-c即使我使用RespondsToSelector检查,我得到NSObject doesNotRegognizeSelector

时间:2009-12-16 13:46:30

标签: iphone objective-c delegates callback

我一直在尝试将一个委托写入一个视图控制器,该控制器有一个方法可以在完成后回调发件人

-(void) doSomething:(id)target action:(SEL)action object:(id)object{
  //Do Some work
  //Produce an NSArray* called array
  object = array;
  if([target respondsToSelector:action])
    {
      [target action];
    }
}

这个想法是发送方中的action方法也有对象的引用,它可以读取结果并在调用选择器以使用数据后执行某些操作。

我遇到的问题是[target respondsToSelector:action]返回true,因此代码尝试调用选择器,然后我得到一个SIGABRT信号和NSObject -doesNotRegogniseSelector的消息。

有谁知道我哪里出错了?

2 个答案:

答案 0 :(得分:4)

尝试:

[target performSelector:action];

键入[target action]不是如何动态调用方法。这就像打电话给[anObject @selector(doSomething)]。此外,可能不需要检查target是否响应selector,因为您的方法被作为参数调用,并且调用者的部分传入错误的选择器是错误的。

答案 1 :(得分:2)

您应该使用- (id)performSelector:(SEL)aSelector来调用选择器。