AVAudioPlayer вызывает утечку памяти? Освободить память? - PullRequest
1 голос
/ 03 июля 2019

Мое приложение Xcode воспроизводит много разных аудиофайлов.Кажется, есть утечка памяти, которая в конечном итоге приводит к сбою приложения.Должен ли я освободить память от аудиоплееров?Какой дополнительный код мне нужен, чтобы выпустить их?У меня около 400 аудиофайлов.

NSString *file1Path = [[NSBundle mainBundle] pathForResource:@"50"ofType:@"mp3"];
NSURL *file1URL = [[NSURL alloc] initFileURLWithPath:file1Path];
file1Player = [[AVAudioPlayer alloc] initWithContentsOfURL:file1URL error:nil];
[file1Player play];

Могу ли я просто добавить этот код?

-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
    [file1Player release];
    file1Player=nil;

}

1 Ответ

1 голос
/ 03 июля 2019

Вы предложили добавить [file1Player release].

Если вы используете автоматический подсчет ссылок, это не только не обязательно, но и не разрешено. Если вы используете ручной подсчет ссылок, это важно. Но обязательно укажите delegate из AVAudioPlayer, иначе этот метод не будет вызван.

Если вы используете ручной подсчет ссылок, я бы предложил использовать shift + команду + B (или «Продукт» »« Анализ ») для выполнить статический анализ. Особенно в коде ручного подсчета ссылок (но даже в коде ARC Objective-C) этот статический анализатор является чрезвычайно полезным инструментом. Нет смысла продолжать, пока вы не решите все выявленные там проблемы.

Или, как вы предлагаете, еще лучше, преобразуйте ваш проект ручного подсчета ссылок в автоматический подсчет ссылок.

...