クラスのインターフェイスが公開する必要があるものだけを公開するように、クラスのプライベート メソッドをそのクラスの実装にのみ表示したいとします。Xcode のいくつかの最近のバージョンでは、ヘッダーでメソッドの宣言を省略するだけでこれを行うことができます。ただし、次のように、実装ファイルでカテゴリを宣言し、その中でそのメソッドを宣言する必要があることを 1 つの良い本が示唆しています。
// [in MyClass.m]
#import "MyClass.h"
// category declaration - is it really required?
// edit: it's a class extension declaration, I know, but it doesn't change much
@interface MyClass ()
- (void)myPrivateMethod;
@end
@implementation MyClass
- (void)myPrivateMethod
{
// do something
}
// all methods here can call myPrivateMethod
@end
実際、コンパイルして動作します。さらに、カテゴリ/拡張子宣言部分がなくてもコンパイルして正常に動作します。これは自然な疑問を提起します:
たくさんのプライベート メソッドがある場合、それらすべてをカテゴリで宣言する必要がありますか? ベストプラクティスは何ですか?