Протокол Swift, взаимодействующий с объективным классом ViewController - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь вызвать функцию из моего класса контроллера представления в классе swift с использованием протокола.

@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;

функция, которую я хочубыть вызванным из моего быстрого класса

- (void)readingIsOver {
    [[self logConditionsButton] setHidden:NO];
}

1 Ответ

1 голос
/ 12 июня 2019

Вы должны удерживать сильную ссылку, делая bluetoothManager переменную экземпляра

KestrelDeviceConnect *bluetoothManager;

bluetoothManager = [[KestrelDeviceConnect alloc]init];
...