我正在尝试根据音频是否已经在播放来设置我的 AVAudioSession 类别,在阅读了 AVAudioSession 的 Apple Dev Docs 之后,我想出了这段代码,直接取自他们的解决方案,以实现我想要完成的任务:
UInt32 otherAudioIsPlaying; // 1
UInt32 propertySize = sizeof (otherAudioIsPlaying);
AudioSessionGetProperty ( // 2
kAudioSessionProperty_OtherAudioIsPlaying,
&propertySize,
&otherAudioIsPlaying
);
if (otherAudioIsPlaying) { // 3
[[AVAudioSession sharedInstance]
setCategory: AVAudioSessionCategoryAmbient
error: nil];
} else {
[[AVAudioSession sharedInstance]
setCategory: AVAudioSessionCategorySoloAmbient
error: nil];
}
一切都正确编译,但是当我尝试构建和运行应用程序时,我收到一个 Mach-O 链接器错误,对应于AudioSessionGetProperty
.
Undefined symbols for architecture i386:
"_AudioSessionGetProperty", referenced from:
+[AppDelegate setAudioSession] in AppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我将AVFoundation/AVFoundation.h
文件导入到我的 AppDelegate(正在执行代码的地方)。我还将AVFoundation 框架导入到项目二进制文件本身中。我是否缺少此方法所需的另一个框架?为什么我会收到此错误?