@interfaceで定義せずに、クラスの@implementationでメソッドを作成するにはどうすればよいですか?
たとえば、初期化を行ってからファイルからデータを読み取るコンストラクターがあります。ファイル読み取りコードを別のメソッドに分解して、コンストラクター内から呼び出したいと思います。このメソッドはこの@implementationコンテキストに対してのみプライベートであるため、ヘッダーでこのメソッドを定義したくありません。
これは可能ですか?
これが私の例です。ファイルからTodoタスクリストを読み取る小さなプログラムがあります。
@interfaceは次のとおりです。
@interface TDTaskList : NSObject {
NSString* name; // The name of this list.
NSMutableArray* tasks; // The set of tasks in this list.
}
-(id)initListOfName:(NSString*)aName;
-(NSArray*)loadListWithName:(NSString*)aName;
@end
そしてここに@implementationの一部があります:
-(id)initListOfName:(NSString*)aName {
if (self = [super init]) {
name = aName;
NSArray* aTasks = [self loadListWithName:aName];
tasks = [NSMutableArray arrayWithArray:aTasks];
}
return self;
}
-(NSArray*)loadListWithName:(NSString*)aName {
// TODO This is a STUB till i figure out how to read/write from a file ...
TDTask* task1 = [[TDTask alloc] initWithLabel:@"Get the Milk."];
TDTask* task2 = [[TDTask alloc] initWithLabel:@"Do some homework."];
return [NSArray arrayWithObjects:task1, task2, nil];
}
私がやりたいのは、インターフェースで以下を定義する必要がないことです。
-(NSArray*)loadListWithName:(NSString*)aName;