Подтвердить что ты не робот

Как проверить, отвечает ли делегат на селектор?

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

 [delegate respondsToSelector:@selector(myMethod:)]

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

4b9b3361

Ответ 1

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

@protocol MyProtocol <NSObject>

Ответ 2

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

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