2

そのため、新しいXcodeプロジェクトでは、デフォルトで.mファイルにクラスのカテゴリがあることに気付きました。たとえば、これは.mファイルにあります。

@interface ViewController ()

@end

@implementation

   //Some code    

@end

変数と関数を.mファイルのカテゴリで宣言しても大丈夫なのか、それとも以前のように.hファイルで宣言する必要があるのか​​疑問に思いました。基本的に、カテゴリに関するベストプラクティスは何ですか。

ちなみに、私の質問は以下のリンクに関連しているようですが、そのリンクは私の質問に完全には答えていません。

4

1 に答える 1

6

これはカテゴリではなく、クラス拡張です(空の括弧に注意してください)。.hファイル内の宣言をクラスのインターフェースに制限するために、拡張機能にプライベートivarを含むプライベート実装の詳細を保持できます。ivarは拡張機能にのみ追加でき、カテゴリには追加できないことに注意してください。

このアプローチの非常に重要な結果の1つは、実装にのみ必要な追加のヘッダーを必要とするタイプのivarが必要な場合、そのヘッダーをインターフェイスのヘッダーに含めないようにして、クラスのユーザーから実装の依存関係を隠すことができることです。

于 2012-06-03T01:35:00.623 に答える