Я разрабатываю игровой проект и хочу использовать шаблон композиции объектов, чтобы обеспечить большую гибкость. В настоящее время я переопределяю методы пересылки сообщений, чтобы Composite мог вызывать методы своих компонентов.
Единственным недостатком этого является то, что -forwardingTargetForSelector: работает только тогда, когда должна быть только одна цель. Если у меня есть Composite с двумя компонентами, которые имеют один и тот же селектор, мне придется прибегнуть к использованию (гораздо более медленного) метода -forwardInvocation и выполнить NSInvocation для обеих целей.
После прочтения нескольких книг по продвинутому справочному руководству по Objective-C и среде выполнения кажется, что я могу пересылать сообщения, динамически создавая реализацию, которая будет вызывать IMP в дочерних классах компонентов. Я бы использовал для этого метод class_addmethod времени выполнения.
Мой вопрос: кто-нибудь знает, считает ли Apple это частным API и, следовательно, нарушением правил App Store? Кто-нибудь использовал class_addmethod в приложениях, прошедших проверку?
Общеизвестно, что прокрутка методов не разрешена в магазине, но это не так. точно то же самое. Одним из типичных примеров было использование -drawRect: на UINavigationBar до того, как стал доступен Appearance API. Это будет добавление методов к моему собственному объекту, а не возня с собственным API Apple.
Спасибо за чтение!
Лоуренс