gpt4 book ai didi

iphone - AVAudioPlayer 不使用 ARC 释放内存

转载 作者:行者123 更新时间:2023-11-28 17:56:51 25 4
gpt4 key购买 nike

我创建了一个包含 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。

最佳答案

看来iOS6 和模拟器都有问题。到目前为止,我只在模拟器中测试了我的应用程序是否存在内存泄漏,而没有在实际设备上进行测试。在 iPhone 上运行代码时,一切都很顺利,我的代码中没有内存泄漏。

我还在 stackoverflow 上找到了这些帖子,它们都在说同样的话:

Memory Leak AVAudioPlayer

Memory Leak iOS6

关于iphone - AVAudioPlayer 不使用 ARC 释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17624663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com