【发布时间】:2019-07-01 17:52:24
【问题描述】:
我试图让这个快速协议在一个目标 c 文件中工作,但由于某种原因该函数没有被调用。我希望在设备连接时调用didConnect(),并在设备断开连接时调用didDisconnect()。我在centralManager 中设置了一个断点做connect 函数并打印出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];
}
}
【问题讨论】:
标签: ios objective-c swift protocols