我试图使用协议从swift类中的view controller类触发一个函数。
@objc protocol KestrelDeviceConnectDelegate: AnyObject {
func readingIsOver()
}
class KestrelDeviceConnect: NSObject {
weak var delegate: KestrelDeviceConnectDelegate?
func timerAction() {
timerCounter += 1
if(timerCounter >= 20){
progressHUD.hide()
timerCounter = 0
timer.invalidate()
self.delegate?.readingIsOver()
//present kestrel alert
}
}
}
在视图控制器类viewdidload中
KestrelDeviceConnect *bluetoothManager = [[KestrelDeviceConnect alloc]init];
bluetoothManager.delegate = self;
我想从我的swift类中调用的函数
- (void)readingIsOver {
[[self logConditionsButton] setHidden:NO];
}
最佳答案
您需要通过将bluetoothManager
设置为实例变量来保存强引用
KestrelDeviceConnect *bluetoothManager;
bluetoothManager = [[KestrelDeviceConnect alloc]init];