AVFoundation iOS 5

Мои приложения, запущенные в appstore, используют mp3 и видео файлы, которые не работают с обновления iOS5.

Я установил xcode 4.2 и... Когда я тестирую устройство iPhone 5 Simulator или , я получаю следующую ошибку (для аудио- или видеофайлов):

Error loading 
System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn.bundle/Contents/MacOS/AudioIPCPlugIn:  
dlopen(/System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn.bundle/Contents/MacOS/AudioIPCPlugIn, 262): 
Symbol not found: ___CFObjCIsCollectable
Referenced from: /System/Library/Frameworks/Security.framework/Versions/A/Security
Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation
in /System/Library/Frameworks/Security.framework/Versions/A/Security

Когда я пробую это в симуляторе iPhone 4.3 симулятор или , он не сбой..

Я очистил и повторно импортировал связанные фреймворки, но, похоже, такая ошибка

Примечание. Мои приложения не используют никакой безопасности.

Не могли бы вы помочь?

Ответы

Ответ 1

Я только что нашел ответ здесь.

Если ваше приложение отключилось, отключите все исключения на вкладке "Точки останова XCode 4". Возможно, это ошибка SDK.

Ответ 2

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

Сделать проигрывателем сохраненное свойство

@property (strong)AVAudioPlayer *player;

Не забудьте установить делегат (self.player.delegate = self) и использовать методы делегирования для очистки:

-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)playedSuccessfully {
    self.player = nil;
}

Ответ 3

Я нашел решение: NSURL вместо NSString:

NSURL *chemin = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/MySound.wav", [[NSBundle mainBundle] resourcePath]]];
NSError *error;
AVAudioPlayer* mySound = [[AVAudioPlayer alloc] initWithContentsOfURL:chemin error:&error];
mySound.delegate = self;
[chemin release];
[mySound Play];

Ответ 4

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