我正在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]检查蓝牙连接设备的数量
答案 0 :(得分:0)
根据堆栈跟踪,看起来您订阅了KVO更改或某些通知,例如AVAudioSessionRouteChangeNotification或MPVolumeViewWirelessRouteActiveDidChangeNotification,但是您的对象(侦听器)已释放而没有removeObserver /取消订阅。
在iOS 9或更高版本中,不再需要NSNotificationCenter观察者在释放时注销自己。因此,我建议您结帐KVO。