iOS 5.0 で iPhone アプリを開発しましたが、問題なく動作します。しかし、iOS 4.3(Base SDK = 最新の iOS 5.0、コンパイラ = Apple LLVM 3.0、Deployment Target = 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'
呼び出したときに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");
}
iOS 4.3 で奇妙なエラーが発生してクラッシュする理由を教えてください。ありがとうございました!