Магазин приложений - метод 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 и посмотреть, принята ли она. Не все приложения просматриваются одинаково, иногда это действительно зависит от рецензента.