сбит с толку: (2.5) Приложения, которые используют непубличные API, будут отклонены - PullRequest
6 голосов
/ 26 августа 2011

Я отправляю свое приложение в магазин приложений, и после проверки оно было отклонено. Причина от Apple была:


2.5. Приложения, использующие непубличные API, будут отклонены

* Мы обнаружили, что ваше приложение использует один или несколько непубличных API-интерфейсов, что не соответствует Рекомендациям по рассмотрению в App Store. Использование непубличных API-интерфейсов недопустимо, так как это может привести к ухудшению работы пользователей в случае изменения этих API-интерфейсов. Мы нашли следующие непубличные API в вашем приложении:

dateWithCalendarFormat: TimeZone:

hourOfDay

minuteOfHour

secondOfMinute

setNavigationBar:

Если вы определили методы в своем исходном коде с теми же именами, что и вышеупомянутые API, мы рекомендуем изменить имена ваших методов, чтобы они больше не конфликтовали с частными API Apple, чтобы избежать пометки вашего приложения в будущих представлениях.

Кроме того, один или несколько из вышеупомянутых API могут находиться в статической библиотеке, прилагаемой к вашему приложению. Если у вас нет доступа к исходному коду библиотеки, вы можете найти скомпилированный двоичный файл с помощью инструментов командной строки «strings» или «otool». Инструмент «strings» может выводить список методов, которые вызывает библиотека, а «otool -ov» выводит структуры классов Objective-C и их определенные методы. Эти методы могут помочь вам определить, где находится проблемный код. *


Но проблема в том, что я не объявлял и не определял ни один из методов с именами в качестве вышеупомянутых API. И я не использовал ни одну пользовательскую библиотеку. Это довольно простое приложение (planer) и я использовал только: UIKit, CoreData, AVFoundation, Foundation и EventKit.

Я вчера отправил сообщение в Apple, но ответа пока нет.

Есть идеи?

1 Ответ

4 голосов
/ 26 августа 2011

Вы сказали, что в комментариях выше вы использовали

 [[[datePicker date] dateWithCalendarFormat:nil timeZone:nil] hourOfDay]

Теперь [datePicker date] возвращает NSDate, чья документация показывает, что нет открытых методов с именами dateWithCalendarFormat:timezone: и hourOfDay и т. Д.

Таким образом, вы не можете просто использовать их.

Что касается setNavigationBar:, свойство navigationBar из UINavigationController является свойством только для чтения, как сказано в документации,Поэтому вы не можете установить это.

Когда вы компилируете свое приложение, компилятор должен был выдать много предупреждений об этом, сообщив, что селектор не найден и т. Д. Вы должны всегда рассматривать эти предупреждения как ошибки и устранять их.Таким образом, вы можете избежать отклонения после подачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...