音楽を再生する必要があるゲームを作成しています。コードをより管理しやすくするために、サウンドを処理する NSObject を作成したいと考えました (フェーディング、プレイリストでのサウンドの再生など)。私はこのコードを持っています:
NSSound *music = [[NSSound alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:self.filename ofType:self.fileExtention] byReference:NO];
[music play];
このコードは、AppDelegate.m ファイルに配置すると機能しますが、新しい NSObject クラスに配置すると機能しません。
NSObject クラスのコード (Music という名前):
- (void)playMusic:(NSString *)fileName ofType:(NSString *)type
{
NSSound *music = [[NSSound alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:self.filename ofType:self.fileExtention] byReference:NO];
[music play];
NSLog(@"Works!");
}
AppDelegate.m で次のコードを使用してメソッドを呼び出します。
[[[Music alloc] init] playMusic:self.fileName ofType:self.extension];
これが実行されると、「Works!」というログが記録されます。つまり、コードが実行されます。
したがって、AppDelegate ではまったく同じコードが機能しますが、NSObject クラスでは機能しません。NSObject クラスで NSSound を再生することが可能かどうか (そうでない場合、なぜでしょうか?) 知っている人はいますか? もしそうなら、それが機能するようにコードを編集する方法は? それは私のコードをずっとすっきりさせます;)