Ответ Сандип Бхандари правильный.
Некоторая информация для лучшего понимания Протокола и делегатов.TestA
- это protocol
, а необязательный var delegate
определен в class A
.Эта настройка правильная.Идея этой настройки заключается в том, что любой пользователь class A
, в данном случае class B
, который соответствует protocol TestA
, получает обратный вызов от class A
.Вам необходимо вызвать функцию delegate.testA()
из class A
.Нынешняя реализация ViewController
совсем не выигрывает от определения протокола и делегатов.
Для правильного использования кабина class A
должна быть модифицирована следующим образом:
protocol TestA {
func testA()
}
class A {
var delegate: TestA?
func process() {
// Do something and call delegate function to report it.
delegate?.testA()
}
}
И изменить ViewController
следующим образом (скопировано class B
для полноты):
class ViewController: UIViewController {
@IBAction func btnClicked(_ sender: Any) {
var objA = A()
var objB = B()
objA.delegate = objB
objA.process()
}
}
// ClassB.swift
class B : TestA {
func TestA() {
print(" Function A from b")
}
}
Теперь функция, реализованная в class B
для соответствия protocol TestA
, будет вызываться при вызове функции process()
для objA
из class A
.Это лучше использовать протокол и делегат.Надеюсь, это поможет.