AppleはiOSアプリでプライベートまたはドキュメントに記載されていないAPIを使用することを禁止しています。呼び出されているメソッドが自分で定義したものであっても、プライベートまたはドキュメントに記載されていないAPIメソッドと同じ名前のメソッドを呼び出すと、プライベートAPIの使用としてフラグが付けられます。
App Loaderは初期スキャンを実行し、メソッド名、インスタンス変数のアクセス、さらにプライベートメソッド名での@selectorの使用をチェックします。App Loaderは常に優れた機能を発揮するわけではなく、ソースファイルが多いほど、生成したAPI分析ファイルが「大きすぎる」という警告が表示される可能性が高くなります。
幸いにも、警告にもかかわらず、アプリケーションを提出することができます。Appleが内部でチェックし、名前が重複しているために何かが取り消された場合は、レビュープロセスをもう一度繰り返す必要があります。
エリカサドゥンは、スキャンを実行するAPIキットと呼ばれるアプリを作成しようとしましたが、彼女は自分の作業を放棄し、ウェブサイトからアプリケーションの痕跡をすべて削除したようです。
Chimp Studiosが作成したApp Scannerは、同じことを行うためにをましたが、2011年以降は更新されていません。残念ながら、大規模なプロジェクトの場合、これにはCocoaPodsからの追加のポッドが多数含まれるプロジェクトが含まれます-現在の(2014)の良いものはありませんプライベートAPIメソッドやインスタンス名と競合しないように積極的に名前を付ける以外に、この問題を解決する方法。
AppleのCocoa命名規則について積極的に学び、予想することができます。それは将来の頭痛を減らすでしょう。ただし、Appleが名前空間のようなものを導入するまでは、この問題が発生する可能性があります。
「無効なバイナリ」エラーはさまざまな原因で発生する可能性がありますが、App Loaderによって作成されたAPI分析ドキュメントとはまったく関係ありません。
スキャンしても、プライベート/ドキュメント化されていないAPIの使用禁止を回避する方法はまだあります。:)