2012-03-06 10 views

答えて

0

パブリッククラスとそのクラスのメソッドは、ビルドフェーズのパブリックヘッダにリストされている必要があります。残りの部分はプライベートヘッダーのままにしておきます。

0

あなたはそれが難しいあなたのプライベートAPIを使用するユーザーのために作るためにいくつかの手順を実行します。

  • ユーザーはプライベートクラスのヘッダーファイルを与えないでください。
  • カテゴリ内のパブリッククラスのプライベートメソッドを宣言します。 (特別なリンカーフラグを必要としないように、メインクラスの実装にメソッドの実装を入れてください。)ユーザーにカテゴリを宣言するヘッダーファイルを与えないでください。
  • インスタンス変数を@interfaceではなく@implementationに入れてください。

ただし、ユーザーがプライベートAPIにアクセスできないようにすることはできません。 Objective-Cが動作する方法のため、すべてのクラスとメソッドの名前はライブラリファイル(check out the class-dump program)から抽出することも、実行時に(Objective-C runtime APIを使用して)検索することもできます。

AppleのプライベートAPIにもこの方法でアクセスできます。彼らはあなたをApp Storeから退出させますが、アドホックまたはエンタープライズの配布を使用してプライベートAPIを使用するアプリケーションをコンパイル、実行、配布することができます。プライベートAPIの使用を完全にブロックする仕組みがあれば、確かにAppleがそれを使用しています。

+0

カテゴリメソッドはスタティックライブラリと互換性がありません – QED

+0

@psoftカテゴリメソッドを使用することができます。単に '-ObjC'または' -force_load'オプションとリンクする必要があります。 – ThomasW

+0

私は21.5Kの男から答えを打つ前に考えていたはずです。 – QED

関連する問題