私は Objective-C から始めて、MusicCollection と Playlists で演習を行っています。MusicCollection には、他のプレイリストに含まれるすべての曲を含むマスター プレイリストがあります。音楽ライブラリにすぐに追加せずに、ユーザーがプレイリストを作成できるようにしたくありません。このように、ユーザーはプレイリストを作成してすぐに曲を追加するだけで、後で手動で追加することなくマスター ライブラリに反映されます。これが MusicCollection の私の init です。
- (id) initWithName: (NSString *)aName
{
self = [super init];
if(self)
{
name = aName; // name of MusicCollection
collection = [NSMutableArray array]; // array of Playlist objects
// Now I'm making a playlist which I want to be designated
// as the master playlist.
library = [[Playlist alloc] initWithName:@"Library"
underCollection:self];
}
return self;
}
Playlist init メソッドで実行するロジックがよくわかりません。適切な MusicCollection がまだ作成されていない場合、ユーザーが Playlist オブジェクトを作成することを許可したくありません。ここに私が持っているものがあります:
- (id) initWithName: (NSString *)theName underCollection:(MusicCollection *)theMusic
{
self = [super init];
if(self)
{
name = theName;
songs = [NSMutableArray array];
if([theMusic.collection count] == 0)
{
NSLog(@"This is the master playlist");
[theMusic.collection addObject:self];
}
else if([theMusic.collection count] != 0)
{
[theMusic.collection addObject:self];
NSLog(@"Adding a regular playlist");
}
}
return self;
}
これは私には危険に思えます。ユーザーは、Playlist で init メソッドを呼び出すだけで、適切に初期化されていない MusicCollection を使用してプレイリストを作成しようとすることができます。これを行うより良い方法はありますか?