Магазин приложений - метод Swizzling Legality

Существует ли какая-либо текущая информация о том, что swizzling не работает или нет, легально/незаконно в App Store?

Единственная точка данных, которую я могу найти, - это трехкамерная вставка 3D20, которая началась с этого уведомления:

Ваше приложение, xxx, в настоящее время отправленное в App Store, использует method_exchangeImplementations для обмена реализацией Apple предоставили API с вашими собственными реализациями. Из-за предстоящих изменения, это поведение в вашей заявке может вызвать сбой или вызвать потеря пользовательских данных на iPhone OS 4.0.

xxx использует метод_exchangeImplementations для обмена реализацией dealloc с вашим методом ttdealloc. Он также реализация метода popViewControllerAnimated: с помощью метод popViewControllerAnimated2:.

Пожалуйста, немедленно устраните эту проблему и загрузите новый iTunes Connect. Мы можем удалить вашу заявку, если считаем, что делать это разумно или необходимо.


Когда я ищу, каждый недавний разговор, который я могу найти о swizzling, и в магазине приложений, похоже, ссылается на тот же инцидент Three20. Уведомление кажется довольно специфичным, и мне интересно, были ли проблемы с конкретными изменениями, связанными с изменениями, которые были сделаны Three20, или если метод_объект_обмена универсально запрещен.

Есть ли другие данные о том, разрешена ли практика? Есть ли разработчики с приложениями в магазине, которые используют swizzling?

Спасибо!

Ответ 1

AFNetworking, широко распространенный lib (IMO), используемый для сетевых запросов, использует swizzling по крайней мере до версии 1.3.4 для поддержки дополнительных допустимых кодов состояния и типов контента в методах класса.

Так что это кажется законным.

Примечание. Они использовали class_replaceMethod, а не method_exchangeImplementations.

Ответ 2

Обычно swizzling будет для отладки видеть, когда вызывается конкретный метод, или в ситуации, когда вы не можете подклассифицировать что-либо или использовать для нее категорию. Если у вас нет плотного графика размещения вашего приложения в магазине приложений, я думаю, вы можете попробовать отправить свое приложение с помощью метода swizzling и посмотреть, принята ли она. Не все приложения просматриваются одинаково, иногда это действительно зависит от рецензента.