我正在遵循Apple Core蓝牙编程指南,尝试设置一个外围管理器来通告某些数据。我根据指南编写了以下代码 https://developer.apple.com/library/archive/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/PerformingCommonPeripheralRoleTasks/PerformingCommonPeripheralRoleTasks.html#//apple_ref/doc/uid/TP40013257-CH4-SW1
_peripheralManager = [[CBPeripheralManager alloc] initWithDelegate:self queue:nil options:nil];
CBUUID *myConnectUUID = [CBUUID UUIDWithString:@"277860A8-9941-465B-9E75-F77F935299E7"];
CBUUID *advertiseUUID = [CBUUID UUIDWithString:@"C223B374-18FF-4D0B-8B46-B7CEC9C85077"];
_myCharacteristic =
[[CBMutableCharacteristic alloc] initWithType:advertiseUUID
properties:CBCharacteristicPropertyRead
value:nil permissions:CBAttributePermissionsReadable];
_myService = [[CBMutableService alloc] initWithType:myConnectUUID primary:YES];
_myService.characteristics = @[_myCharacteristic];
[_peripheralManager addService:_myService];
然而,在这条线上
_myService.characteristics = @[_myCharacteristic];
我收到一个 Xcode 错误,上面写着"分配给只读属性"。我不确定问题是什么,因为我直接按照说明进行操作,并且正在正确初始化服务/特征。有人有什么建议吗?
.h 文件中的_myservice声明:
@property (strong, nonatomic) CBService *myService;
问题是这一行:
@property (strong, nonatomic) CBService *myService;
您已将_myService
声明为 CBService,因此据编译器所知,它不可变。因此,对于_myService
,characteristics
是不可分配的。
你应该写的
CBMutableService* service = [[CBMutableService alloc] initWithType:myConnectUUID primary:YES];
service.characteristics = @[_myCharacteristic];
_myService = service;