2012-01-12 1 views
19

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

Единственная точка данных я могу найти это Three20 framework shakeup некоторое время назад, которое началось с этим уведомлением:

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

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

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


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

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

Спасибо!

+1

Что именно вы действительно хотите сделать? В большинстве случаев метод swizzling - это взлом, которого можно избежать с лучшим дизайном. – JeremyP

+4

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что это касается политики отклонения Apple. См. Также: [Почему мы не поддерживаем поддержку вашей любимой компании] (https://meta.stackoverflow.com/questions/255745/why-were-not-customer-support-for-your-favorite-company). – FelixSFD

ответ

7

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

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

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

+0

Я сделал поиск рабочей области для 'method_exchangeImplementations' в AFNetworking не смог найти никаких ссылок на него.AFNetworking использует библиотеку времени исполнения только для некоторых категорий представления и использует метод objc_setAssociatedObject для привязки ключевых значений. Я не это метод swizzling. –

+0

AFNetworking прошел капитальный ремонт, возможно, версия 2.0 работает без swizzling. Тем не менее, до версии 1.3.4 и включительно она использовала class_replaceMethod раньше в AFHTTPRequestOperation. –

+0

, пожалуйста, обновите свой ответ. –

0

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

+0

Кто-нибудь пробовал это? или я стану первым, кто узнает? –

+1

@ShayanRC это законно, вы можете использовать swizzling. – Peres

 Смежные вопросы

  • Нет связанных вопросов^_^