0

私はiPadに音楽プレーヤーアプリを持っています。サーバーからm4aファイルをダウンロードし、docdirに保存します。また、コアデータを使用してプレイリスト情報を保存します。1000曲以上あり、テーブルが完全に読み込まれ、完全に再生されます。プレイリストを問題なく再生できます。しかし...たまに1曲が再生されません。無音!セルを押すと曲を再生したり、次の曲に移動したりできます。すべてが正常に機能します。したがって、この問題はランダムで断続的です。行き詰まるのは決して同じ曲ではありません。私が言ったように、デバッグステートメントを提供することはできません。それは非常にランダムで断続的であるため、複製するのは困難です。ARCの問題なのかしら。このアプリは間もなく本番環境に移行する予定ですので、ご協力ください。

相対コード:

// setup music session
NSError *error = nil;
[[AVAudioSession sharedInstance] setDelegate: self];
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &error];
[[AVAudioSession sharedInstance] setActive: YES error: &error];

NSLog(@"error AVAudioSession:%@", [error description]);

AVAudioPlayer *player = [[AVAudioPlayer alloc] init];
NSString *fullPath = fullPath = [self.docDirPath stringByAppendingPathComponent:filename];
NSURL *musicFileURL = [[NSURL alloc] initFileURLWithPath:fullPath];

// getting song from docDir
    NSData *songData = [[NSData alloc] initWithContentsOfURL:musicFileURL];
    player = [player initWithData:songData error:&error];
    NSLog(@"error player reg:%@", [error description]);

//NSLog(@"playing %@ at index:%d", musicFileURL, index);

    self.appPlayer = player;

    [self.appPlayer prepareToPlay];
    [self.appPlayer setEnableRate: YES];
    [self.appPlayer setDelegate: self];
    [self.appPlayer play];
4

2 に答える 2

0

ARCを使用する場合、問題の解決を開始するための良いポイントは、Instrumentsでの参照カウントを監視することです。私も問題を抱えていました。私のファイルはどれも再生されていませんでした。Instrumentsで、サウンドの再生が開始される前にAVAudioPlayerインスタンスがリリースされたことを確認しました。少なくともリリースされたように見えました。AVAudioPlayerの参照をコアデータモデルに保存した後、バグが修正されました!ARCのない別のプロジェクトでは、同じコードが参照を保存せずに機能しました。

于 2012-11-13T18:39:47.253 に答える
0

または、プロパティ宣言で保持する代わりに、strongを使用してみることができます

@property(nonatomic、strong)AVAudioPlayer * player;

于 2012-11-13T19:47:23.377 に答える