web-dev-qa-db-ja.com

プライベートAPIとは何ですか。また、iOSアプリが使用されている場合、なぜAppleはiOSアプリを拒否しますか?

私はこれについていくつかの記事を読みましたが、これを正しく理解しているかどうかを見たいだけです。

Appleは、プライベートAPIを使用するとアプリを拒否します...

  1. 「プライベートAPI」と「非プライベートAPI」の主な違いは何ですか?

  2. 「非プライベート」APIは、Appleが提供および検証したAPIのみですか?

  3. APIは単なるフレームワークと対話する方法ではなく、フレームワークは、人々が些細な目的で使用できるカプセル化されたクラス/ヘッダーのセットにすぎませんか?

  4. これは、アプリで(Apple以外の)誰かのコードをまったく再利用できないという意味ではないでしょうか?

  5. これが当てはまる場合、プログラマーが独自のカスタムクラスとメソッドを作成するときはいつでも、特定の目的のためだけにミニフレームワークを技術的に設計しているのではないでしょうか。これは、彼が自分のプライベートAPIを使用しているという意味ではないでしょうか?

  6. 私のクラス/メソッドと一緒に他の誰かのクラス/メソッドを使用することの違いは何でしょうか?彼らはどのように違いを伝えることができますか?なぜこれが問題になるのでしょうか?

これについての私の理解はばかげているように思われ、「Private API」が正確に何であるかを理解しているとは思わない。私は、あなたのアプリが機能しなくなる可能性のあるAPIの変更から保護することだと読みました。これは、APIが(コンパイル時ではなく)実行時にリンクされ、知らないうちに自動的に更新できることを意味していますか? (元々、API /フレームワークはコンパイルするたびに石に設定されると考えていましたが、おそらくこれが間違っているところです)

誰かが私を助けてくれますか?私はこのポリシーについて本当に混乱しています。ありがとうございました!

51
giant91

Q. 「プライベートAPI」と「非プライベートAPI」の主な違いは何ですか?

  • プライベートとは、公的に定義されていないものです(あまり重要ではありません)

Q. 「非プライベート」APIはAppleが提供および検証したAPIのみですか?

  • プライベートAPIとパブリックAPIは両方ともAppleによって「提供」されますが、使用できるのはパブリックAPIのみです。
  • プライベートAPIは、Appleのみが使用します

Q. APIはフレームワークと対話するための単なる方法ではなく、フレームワークは、人々が些細な目的に使用できるカプセル化されたクラス/ヘッダーのセットですか?

  • はい

Q. これは、アプリで(Apple以外の)コードをまったく再利用できないということではないでしょうか?

  • 番号

Q. これが当てはまる場合、プログラマーが独自のカスタムクラスとメソッドを作成するときはいつでも、特定の目的のためだけにミニフレームワークを技術的に設計しているのではないでしょうか。自分のプライベートAPI?

  • いいえ(フレームワークはアプリとは異なります)

Q. 他の人のクラス/メソッドを私のクラス/メソッドと一緒に使用することの違い、どのように違いを伝えることができ、そしてなぜこれが問題になるのでしょうか?

  • 通常はしません

取得する必要があるポイントは、プライベートAPIを参照するときは、プライベートApple提供されたAPIについてのみ考える必要があるということです。
サードパーティの他のAPIは異なります(そしてAppleは、サードパーティのコードがApple private API)。

43
Wain