Как проверить, отвечает ли делегат на селектор? - PullRequest
25 голосов
/ 10 февраля 2010

Я знаю, что мне нужно написать:

 [delegate respondsToSelector:@selector(myMethod:)]

Но компилятор жалуется, что responsedsToSelector не является методом в протоколе, и это правильно. Однако я видел, что многие примеры кода используют это, как вы это делаете?

Ответы [ 2 ]

58 голосов
/ 10 февраля 2010

Ваш @protocol должен реализовать <NSObject>, просто обновите определение протокола, чтобы оно выглядело так:

@protocol MyProtocol <NSObject>
9 голосов
/ 10 февраля 2010

Грег Мартин имеет ваш ответ, но вот краткое объяснение почему компилятор жалуется:

Метод respondsToSelector: является частью протокола NSObject, поэтому, когда вы пытаетесь отправить это сообщение на удаление (типа id), компилятор не может знать, что ваш делегат сможет справиться с этим.

...