Метод forwardInvocation
- это то, что вы хотите использовать.Он вызывается автоматически, когда к объекту вызывается несуществующий селектор.Поведение этого метода по умолчанию - вызывать doesNotRecognizeSelector:
(именно это выводит отладочную информацию на вашу консоль), но вы можете переопределить его, делая все, что захотите.Один из рекомендуемых Apple подходов заключается в том, чтобы этот метод передавал вызов метода другому объекту.
- (void)forwardInvocation:(NSInvocation *)anInvocation
Обратите внимание, что forwardInvocation
- довольно дорогая операция.Объект NSInvocation должен быть создан платформой и (необязательно) использован для вызова селектора в другом экземпляре.Если вы ищете (относительно) более быстрый метод обнаружения несуществующих селекторов, вы можете вместо этого реализовать forwardingTargetForSelector
.
- (id)forwardingTargetForSelector:(SEL)aSelector
Вам следует Документация Apple , чтобы узнать, какДля эффективного переопределения этих методов есть некоторые ошибки, на которые следует обратить внимание, особенно при переопределении метода forwardInvocation
для того же объекта, у которого будут отсутствующие селекторы.