Ошибка AppStore при использовании непубличного API

#iphone #app-store

#iPhone #app-store

Вопрос:

Я отправляю свое приложение в AppStore, оно выдает ошибку

Статус: недопустимый двоичный файл и указывает причину следующим образом,

Приложение содержит или наследует от непубличных классов в MyApp: UIProgressHUD

Любая помощь будет оценена…

Ответ №1:

Well UIProgressHUD — это частный класс, и вам не разрешено его использовать. Если вы создаете UIProgressHUD свой собственный, просто переименуйте его в какой-нибудь thins like MYProgressHUD .

Ответ №2:

Я не совсем согласен с ответом rckoenes. Это также немного неясно — я предполагаю, что под «переименованием» вы подразумеваете динамическое создание класса с использованием NSClassFromString — Apple запускает статический анализ отправляемого вами кода, поэтому, если вы используете частные классы, вам нужно сделать это таким образом, Чтобы обойти это (т. Е. Динамически Создавать классы из строк и т. Д). Но вам действительно не следует использовать частные классы, потому что нет никакой гарантии, что они будут вести себя так же в будущих версиях ОС. Действительно, в iOS 5 Apple внесла ряд архитектурных изменений в недокументированные классы, которые нарушили поведение пользовательского интерфейса в некоторых приложениях.

Лучшим вариантом является использование установленной альтернативной библиотеки UIProgressHUD — эта особенно хороша: https://github.com/jdg/MBProgressHUD

Часто доступные альтернативные классы предлагают больше функциональности, чем частный, который вы пытались использовать.

Комментарии:

1. API указывает, что вам не разрешено использовать частные фреймворки, поэтому, даже если вы попытаетесь скрыть, Apple может позже извлечь ваше приложение. и вы нарушаете свой контракт с Apple. и да MBProgressHUD , это хорошая замена.