Есть ли способ проверить, существует ли метод в Objective-C?
Я пытаюсь добавить охранника, чтобы увидеть, есть ли у моего объекта метод, прежде чем его вызывать.
objective-c
teepusink
источник
источник
- forwardInvocation:
).Ответы:
источник
Также существует селектор static message instanceRespondToSelector: (SEL) Вы бы назвали его так:
или вот так:
Это может быть полезно, если вы хотите вызвать один конструктор или другой в зависимости от этого (я имею в виду, прежде чем иметь сам экземпляр).
источник
Используйте
respondsToSelector:
. Из документации :источник
Вы ищете RespondsToSelector: -
Как сказал Донал, приведенное выше говорит вам, что foo определенно может справиться с получением селектора bar. Однако, если foo является прокси-сервером, который перенаправляет bar на некоторый базовый объект, который получит сообщение bar, то responsedsToSelector: скажет вам НЕТ, даже если сообщение будет перенаправлено объекту, который отвечает на bar.
источник
Проверка селекторов с помощью responsedsToSelector обычно выполняется только для методов делегата. Вы не должны использовать forwardInvocation или прокси для методов делегата. Если вам нужно использовать RespondsToSelector в других ситуациях, вы можете убедиться, что нет более подходящего способа разработки вашей программы.
источник