1

AVAudioPlayer オブジェクトを含むシングルトンを作成しました

#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>

@interface drwAudioPlayer : NSObject <AVAudioPlayerDelegate>

@property AVAudioPlayer *aPlayer;

+(drwAudioPlayer *) sharedPlayer {

    static drwAudioPlayer *sharedPlayer = nil;
    if (!sharedPlayer) {
        sharedPlayer = [[super allocWithZone:nil] init];
    }
    return sharedPlayer;
}

-(void) setPlayerEpisode:(NSData *) episodeFile {
    NSError *error;
    aPlayer = nil;
    aPlayer = [[AVAudioPlayer alloc] initWithData:episodeFile error:&error];
}

メイン ビューに上記のクラスを含め、タイプ drwAudioPlayer のオブジェクトを作成しました。を呼び出すと[drwAudioPlayer.aPlayer setPlayerEpisode:foo]、新しいファイルがロードされ、古いファイルが解放されていることがわかります。

しかし、ファイルの再生を開始してから呼び出そうとするとすぐに、[drwAudioPlayer.aPlayer setPlayerEpisode:foo2]ロードされる新しいファイルのサイズだけメモリが増加します。

新しいファイルをロードして再生する前に、基本的にメモリを解放するにはどうすればよいですか。

ARCを使用しています。

4

2 に答える 2

0

iOS6とシミュレーターに問題があるようです。これまでのところ、実際のデバイスではなく、メモリリークについてシミュレーターでアプリケーションをテストしただけです。iPhoneでコードを実行すると、すべてが魅力的に機能し、コードにメモリリークはありません.

同じことを言っているstackoverflowのこれらの投稿も見つけました:

メモリ リーク AVAudioPlayer

メモリ リーク iOS6

于 2013-07-26T14:09:22.700 に答える