0

私は ViewController を持っています: GLKViewController このコードで:

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSString *path = [[NSBundle mainBundle] pathForResource:@"background-music-aac" ofType:@"caf"];
    NSURL *url = [NSURL URLWithString:path];
    NSData *data = [NSData dataWithContentsOfURL:url];

    AVAudioPlayer *audio = [[AVAudioPlayer alloc] initWithData:data error:nil];
    audio.delegate = self;
    audio.volume = 1.0;
    audio.numberOfLoops = -1;

    [audio prepareToPlay];
    [audio play];

    [self setupContext];
    [self setupDisplay];
}

ただし...私のグラフィカルなものは正常に機能していますが、iOSシミュレーターは音楽を再生しません。私は何か間違っていましたか?

4

1 に答える 1

1

ARC を使用していると仮定すると、メソッドが呼び出し元に戻るとすぐにプレーヤーの割り当てが解除されます。この回答から引用するには:

ARC はオーディオ プレーヤーに解放呼び出しを挿入するため、作成されたメソッドを離れた直後に割り当てが解除されます。

AVAudioPlayerをプロパティとして実装してみてください。

yourdataが nil の場合、ファイルはプロジェクトに正しく追加されていません。ファイルをプロジェクトに追加するには、ファイルをドラッグ アンド ドロップしてターゲットに追加します。

また、 にAVAudioPlayerは、使用したいメソッドがinitWithContentsOfURL:あります。

于 2013-03-23T12:55:39.367 に答える