Я возился с Утечками, пытаясь найти, какая функция не освобождается (я все еще новичок в этом) и мог бы действительно использовать некоторое опытное понимание.
У меня есть этот фрагмент кода, который кажется виновником. Каждый раз, когда я нажимаю кнопку, которая вызывает этот код, 32 КБ памяти дополнительно выделяется для памяти, и когда кнопка освобождается, память не освобождается.
Я обнаружил, что каждый раз, когда AVAudioPlayer
вызывается для воспроизведения файла m4a, последняя функция для анализа файла m4a - MP4BoxParser::Initialize()
, и это, в свою очередь, выделяет 32 КБ памяти через Cached_DataSource::ReadBytes
У меня вопрос: как мне освободить это после его завершения, чтобы оно не продолжало выделять 32 КБ при каждом нажатии кнопки?
Любая помощь, которую вы можете оказать, очень ценится!
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//stop playing
theAudio.stop;
// cancel any pending handleSingleTap messages
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(handleSingleTap) object:nil];
UITouch* touch = [[event allTouches] anyObject];
NSString* filename = [g_AppsList objectAtIndex: [touch view].tag];
NSString *path = [[NSBundle mainBundle] pathForResource: filename ofType:@"m4a"];
theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio prepareToPlay];
[theAudio setNumberOfLoops:-1];
[theAudio setVolume: g_Volume];
[theAudio play];
}