Ответ 1
Apple запрещает использование частных или недокументированных API в приложениях iOS. Любые вызовы, которые вы делаете для методов с таким же именем, как частные или недокументированные методы API, будут помечены как использование частного API, даже если вызываемый метод является тем, что вы сами определили.
App Loader выполняет начальное сканирование, проверяет имена методов, доступ к переменной экземпляра и даже использование @selector с именами частных методов. App Loader не всегда выполняет отличную работу, и чем больше исходных файлов, тем больше вероятность, что вы должны предупредить, что созданный им файл анализа API "слишком велик".
К счастью, вы все равно можете подать заявку, несмотря на предупреждение. Apple будет проверять его внутренне, и если что-то ударит из-за перекрывающихся имен, вам придется снова пробираться через процесс обзора.
Эрика Садун попыталась создать приложение под названием API Kit, которое будет выполнять сканирование для вас, но она, похоже, отказалась от своей работы и удалила все следы приложения с ее сайта.
Студии Chimp создали App Scanner, чтобы сделать то же самое, но он не обновлялся с 2011 года. К сожалению, для крупных проектов - и это включает проекты с много дополнительных модулей от CocoaPods - нет текущего (2014) хорошего способа решения этой проблемы, кроме проактивного именования таких вещей, чтобы они не конфликтуют с частными API-методами и именами экземпляров.
Вы можете проактивно узнать об Apple Cocoa Соглашения об именах и попытаться предвидеть. Это уменьшит будущие головные боли. До тех пор, пока Apple не представит нечто вроде пространств имен, мы можем время от времени сталкиваться с этой проблемой.
Ошибка "недействительной двоичной" может быть вызвана несколькими причинами, но она полностью не связана с документом анализа API, созданным App Loader.
Вы должны знать, что даже при сканировании все еще есть способы обойти запрет на использование частных/недокументированных API.:)