У меня есть этот тяжелый базовый подкласс класса VC UIViewController, который я пытаюсь преобразовать как vcprotocol.
Это базовый виртуальный канал, который выполняет всю работу как класс бога. Который я хотел бы разбить как vcProtocol.
Я пытаюсь сделать это разделение интересов. Не все ViewControllers должны отображать сообщение с предупреждением или сеть не подключена.
Например, у меня есть displayView, который я создаю в расширении протокола как вычисляемое свойство. Нет предупреждения об ошибке, но индикатор не отображается. Когда я пытаюсь отладить и делать po acticvityIndicator
, я получаю следующую ошибку, которая указывает, что ActivityIndicator никогда не выделялся.
error: Execution was interrupted, reason: EXC_BAD_ACCESS (code=1, address=0x5a1012de027).
The process has been returned to the state before expression evaluation.
Фрагмент кода:
protocol vcProtocol {
var activityIndicator: UIActivityIndicatorView { get }
}
расширение протокола:
extension vcProtocol where Self: UIViewController {
var activityIndicator: UIActivityIndicatorView {
let indicator = UIActivityIndicatorView(style: UIActivityIndicatorView.Style.gray)
indicator.hidesWhenStopped = true
indicator.style = .whiteLarge
indicator.color = .red
indicator.backgroundColor = UIColor.gray
indicator.translatesAutoresizingMaskIntoConstraints = false
return indicator
}
func showLoadingIndicator() {
activityIndicator.startAnimating()
activityIndicator.isHidden = false
}
func hideLoadingIndicator() {
activityIndicator.stopAnimating()
activityIndicator.isHidden = true
}
}
Я не могу обернуть голову, как это решить. поскольку я могу иметь только вычисленные свойства в протоколе.
поэтому я их так же получаю только свойства.
я планирую использовать расширение протокола для обеспечения реализации по умолчанию.
Есть мысли о том, как решить эту проблему.