Динамическая загрузка mp3 файлов в AVAudioPlayer - аргумент передачи по значению - PullRequest
0 голосов
/ 08 ноября 2010

Я пытаюсь динамически воспроизводить несколько звуков mp3 с помощью AVAudioPlayer.

Следующий код работает нормально и действительно воспроизводит звук, тем не менее, я получаю эту ошибку при анализе

"PassАргумент by-value в выражении сообщения не определен "

Почему так и как это исправить?

+(void)playSound:(int)soundName
{
    NSString *theSound;
    switch (soundName) {
        case 1:
            theSound = @"beep1.mp3";
            break;
        case 2:
            theSound = @"beep2.mp3";
            break;
        case 3:
            theSound = @"beep3.mp3";
            break;
        default:
            break;
    }
    //
    NSURL *s1 = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] resourcePath], theSound]];
    NSError *error;
    AVAudioPlayer *sound1;
    sound1 = [[[AVAudioPlayer alloc] initWithContentsOfURL:s1 error:&error] autorelease];
    sound1.numberOfLoops = 0;
    //[sound1 prepareToPlay];
    [sound1 play];

}

Ответы [ 2 ]

1 голос
/ 08 ноября 2010

Вы действительно хотите попробовать воспроизвести звуковой файл без указания пути, если soundName не равно 1,2 или 3?

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

0 голосов
/ 08 ноября 2010

Попробуйте NSString *theSound = @"";

Установка значения по умолчанию обычно решает эту проблему.

Пояснение:

Компилятор не уверен, что theSound будет действительно содержать значение при его использовании Рекомендуется присваивать значения по умолчанию некоторым объектам, особенно при работе с циклами и операторами выбора.

...