Я хочу иметь возможность вызывать метод протокола в viewDidLoad, только если текущий UIViewController реализует этот протокол независимо от базового класса, от которого я наследую.Я использую приведенный ниже код Playground, чтобы проиллюстрировать, где я сейчас нахожусь, и он вызвал функцию, но вылетает с ошибкой EXC_BAD_ACCESS (code=1, address=0x0).
и ничего более.
import UIKit
protocol AccessibleProtocol where Self: UIViewController {
func applyAccessibility()
}
class BaseViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
(self as? AccessibleProtocol)?.applyAccessibility()
}
}
class LoginViewController: BaseViewController {
var passwordTextField: UITextField!
override func viewDidLoad() {
passwordTextField = UITextField()
super.viewDidLoad()
}
}
extension LoginViewController: AccessibleProtocol {
func applyAccessibility() {
self.passwordTextField.accessibilityLabel = "Enter Password"
}
}
let loginViewController = LoginViewController()
loginViewController.viewDidLoad()