Objective-c Я получаю NSObject doesNotRegognizeSelector, хотя я проверил с RespondsToSelector - PullRequest
1 голос
/ 16 декабря 2009

Я пытался записать делегата в контроллер представления, у которого есть метод, который будет вызывать отправителя, когда это будет сделано

-(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];
    }
}

Идея состоит в том, что метод действия в отправителе также имеет ссылку на объект, и он может читать результаты и делать что-то после вызова селектора для использования данных.

Проблема, с которой я столкнулся, заключается в том, что [target responsedsToSelector: action] возвращает true, поэтому код пытается вызвать селектор, но затем я получаю сигнал SIGABRT и сообщение NSObject -doesNotRegogniseSelector.

Кто-нибудь знает, где я иду не так?

Ответы [ 2 ]

4 голосов
/ 16 декабря 2009

Попробуйте:

[target performSelector:action];

Ввод [target action] не означает, как динамически вызывать метод. Это было бы как звонить [anObject @selector(doSomething)]. Кроме того, вероятно, нет необходимости проверять, отвечает ли target на selector, поскольку ваш метод вызывается с такими параметрами, и вызывающая сторона будет ошибочно передавать неверный селектор.

2 голосов
/ 16 декабря 2009

Вы должны использовать - (id)performSelector:(SEL)aSelector для вызова селектора.

...