我正在开发一个 iOS 应用程序,需要使用AVFoundation
框架。 Xcode 4 中的工作区结构包含两个项目:
构建实用程序库后,会生成一个静态库,该静态库在主应用程序中用作框架。
因此,当尝试使用下面的代码在主应用程序内播放声音时,它会按预期工作。
NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
NSString *path = [NSString stringWithFormat:@"%@/sound.mp3", resourcePath];
NSURL *url = [NSURL fileURLWithPath:path];
NSError *error = nil;
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url
error:&error];
[audioPlayer play];
相反,当尝试使用与上面相同的代码在实用程序库中播放完全相同的声音(或任何其他声音)时,根本不会播放任何声音,即使错误是nil和音频播放器属性值是正确的(通道数、持续时间)。
我已经确定了AVFoundation
这两个项目都有框架。
另外,我的班级使用AVAudioPlayerDelegate
协议并实现这两个方法:
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag;
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error;
尝试播放声音后,这些方法都不会被调用。
如果我使用AudioToolbox
相反,它会播放声音。但我有兴趣使用AVFoundation
有几个原因。
知道发生了什么事吗?我错过了什么吗AVFoundation
?是否与使用有关AVAudioPlayer
从静态库内部?
提前致谢。