0
我正在使用自動合成的@property
。當我使用方法訪問該屬性時,我遇到了一個EXC_BAD_ACCESS
異常。這裏的是代碼我實現文件的相關章節:屬性訪問上的EXC_BAD_ACCESS,(OS X 10.8.5)
#import "BBBluetoothController.h"
#import <IOBluetooth/IOBluetooth.h>
@interface BBBluetoothController()
@property (nonatomic, strong) CBCentralManager *bluetoothManager;
@end
@implementation BBBluetoothController
- (instancetype)init {
if (self = [super init]) {
_bluetoothManager = [[CBCentralManager alloc] init];
_bluetoothManager.delegate = self;
}
return self;
}
- (instancetype)initWithCoder:(NSCoder *)aDecoder {
if (self = [super init]) {
_bluetoothManager = [[CBCentralManager alloc] init];
_bluetoothManager.delegate = self;
}
return self;
}
- (IBAction)startScanning:(id)sender {
if (self.bluetoothManager.state == CBCentralManagerStatePoweredOn) {
[self.bluetoothManager scanForPeripheralsWithServices:nil options:nil];
self.isScanning = YES;
}
}
@end
異常被拋出-startScanning:
的方法的第一行。在堆棧跟蹤向下鑽取,例外之我見從CBCentralManager
的實現裏面拋出:
0x7fff96c6ed49: leaq -413178944(%rip), %rax ; CBCentralManager._delegate
如果我在-startScanning:
打破我可以看到lldb
如下:
(lldb) po self
<BBBluetoothController: 0x1022213b0>
(lldb) po self.bluetoothManager
<CBConcreteCentralManager: 0x102222180>
(lldb) p self.bluetoothManager.state
(CBCentralManagerState) $2 = CBCentralManagerStateUnknown
(lldb) po self.bluetoothManager.delegate
<BBBluetoothController: 0x1022213b0>
此外,如果我引用-startScanning:
中的實例變量而不是屬性,則所有內容都順利運行。我在這裏錯過了很明顯的東西嗎
編輯:
對於它的價值,這只是正常的OS X 10.9,而不是OS X 10.8.5。