崩溃:AVAudioSession通知线程EXC_BAD_ACCESS

时间:2018-08-27 16:56:18

标签: ios objective-c avaudiosession

我正在EXC_BAD_ACCESS KERN_INVALID_ADDRESS崩溃。是AVFAudio本机SDK问题,还是我错过了应处理的内容?

请查看crashlytics屏幕截图以获取更多信息。

我通过调用以下方法初始化了AVAudioSession:

- (BOOL)prepareAudioSession {

BOOL success = [[AVAudioSession sharedInstance] setActive:NO error: nil];
if (!success) {
    NSLog(@"deactivationError");
}

success = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord 
withOptions:AVAudioSessionCategoryOptionAllowBluetooth error:nil];
if (!success) {
    NSLog(@"setCategoryError");
}

success = [[AVAudioSession sharedInstance] setActive:YES error: nil];
if (!success) {
   NSLog(@"activationError");
}

return success;

}   

然后我打电话给[[AVAudioSession sharedInstance] availableInputs]检查蓝牙连接设备的数量

1 个答案:

答案 0 :(得分:0)

根据堆栈跟踪,看起来您订阅了KVO更改或某些通知,例如AVAudioSessionRouteChangeNotification或MPVolumeViewWirelessRouteActiveDidChangeNotification,但是您的对象(侦听器)已释放而没有removeObserver /取消订阅。

在iOS 9或更高版本中,不再需要NSNotificationCenter观察者在释放时注销自己。因此,我建议您结帐KVO。