AVAudioPlayer выпускает перед игрой? - PullRequest
0 голосов
/ 24 февраля 2012

Я создаю приложение soundboard и использую этот код для воспроизведения mp3 файлов:

-(IBAction)playSound 
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"mysound" ofType:@"mp3"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate=self;
    [theAudio play];
    [theAudio release];
}

Когда я включаю [theAudio release];, звук не воспроизводится. Если я вынимаю его, он играет, но я не хочу утечек памяти. Как я могу это исправить?

Было бы очень полезно, если бы вы могли добавить любой код, который мне нужно добавить. Я новичок в программировании (кроме TrueBasic, который я использовал в школе), поэтому я незнаком с Objective-C.

Ответы [ 2 ]

0 голосов
/ 28 июня 2012

Это только потому, что вы используете локальную переменную. поэтому звук будет выпущен немедленно. Вы должны определить его как члена класса и назначить его здесь. поэтому, когда эта функция завершена, она все еще работает.

0 голосов
/ 24 февраля 2012

подождите, пока аудио не закончится через делегата, чтобы освободить аудио.Я полагаю, что на сайте есть несколько сообщений, подобных этому, если вы будете искать, они будут иметь специальный код делегата.

...