Sky*_*ler 3 iphone crash ios avaudiosession
我在iOS 5.0下开发了一个iPhone应用程序,它运行正常.但是当谈到iOS 4.3(Base SDK =最新iOS 5.0,编译器= Apple LLVM 3.0,部署目标= iOS 4.3)时,它在启动后崩溃.
崩溃点周围的输出如下:
2011-12-06 16:25:08.177 FMWei[466:c203] -[AVAudioSession setMode:error:]: unrecognized selector sent to instance 0x706a7f0
2011-12-06 16:25:08.181 FMWei[466:c203] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AVAudioSession setMode:error:]: unrecognized selector sent to instance 0x706a7f0'
Run Code Online (Sandbox Code Playgroud)
在我调用它时,它看起来AVAudioSession没有成员函数setMode:error:.但奇怪的是我没有调用名字的函数setMode:error:.有关音频处理的代码是:
audio_session = [[AVAudioSession sharedInstance] retain];
audio_session_err = nil;
[audio_session setCategory: AVAudioSessionCategoryPlayAndRecord error:&audio_session_err];
NSLog(@"!");
UInt32 audioRouteOverride = 1;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker,sizeof (audioRouteOverride),&audioRouteOverride);
UInt32 allowMixing = 1;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(allowMixing), &allowMixing);
if (audio_session_err)
{
NSLog(@"audioSession: %@ %d %@", [audio_session_err domain], [audio_session_err code], [audio_session_err description]);
}
else
{
audio_session_err = nil;
[audio_session setActive:YES error:&audio_session_err];
if (!audio_session_err) NSLog(@"audio session is activated successfully");
}
Run Code Online (Sandbox Code Playgroud)
请帮我弄清楚为什么它会在iOS 4.3下崩溃并出现奇怪的错误.谢谢!
在运行时,调用许多方法,这些方法不在您的代码中,但是由于您进行了API调用而在后台调用.
我不会关注被调用的方法,而是关注为什么它被发送到的对象无法响应选择器.该对象可能被转换为错误类型,因此不会继承正确的方法.(在你显示的代码片段中,你没有显式强制转换AVAudioSession *audio_session.)另一个方向是检查你是否没有使用仅仅是iOS 5的其他API调用,后者在后台调用此方法并因此生成错误.
最后,如果您最近才将构建目标更改为包含iOS 4.3,则可能只需要进行干净构建(Product> Clean),以便编译与iOS 4.3兼容的代码.
| 归档时间: |
|
| 查看次数: |
2198 次 |
| 最近记录: |