6

音楽を再生する必要があるゲームを作成しています。コードをより管理しやすくするために、サウンドを処理する 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 を再生することが可能かどうか (そうでない場合、なぜでしょうか?) 知っている人はいますか? もしそうなら、それが機能するようにコードを編集する方法は? それは私のコードをずっとすっきりさせます;)

4

1 に答える 1