Я пытаюсь заставить этот быстрый протокол работать в объектном файле c, но по какой-то причине функция не вызывается. Я хочу, чтобы didConnect()
вызывался при подключении устройства и didDisconnect()
вызывался при отключении устройства. Я установил точку останова в CentralManager, подключил функцию и распечатал delegate
, он вернулся nil
@objc protocol KestrelDeviceConnectDelegate {
@objc func didConnect()
@objc func didDisconnect()
}
@objcMembers
class KestrelDeviceConnect: NSObject{
static let singleton = KestrelDeviceConnect()
public var delegate: KestrelDeviceConnectDelegate?
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
self.isInitialReading = false
self.kestrelIsConnected = true
kestrelPeripheral.discoverServices(nil)
self.delegate?.didConnect()
}
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
self.kestrelIsConnected = false
self.delegate?.didDisconnect()
}
}
в файле цели c
@interface ViewController ()<KestrelDeviceConnectDelegate> {
KestrelDeviceConnect<KestrelDeviceConnectDelegate> *_kestrelVC;
}
@implementation ViewController
-(void)viewDidLoad {
[super viewDidLoad];
_kestrelVC = [[KestrelDeviceConnect alloc]init];
[_kestrelVC setDelegate:self];
}
-(void)didConnect{
[[self connectToKestrelButton] setHidden:NO];
}
}