我有 UIViewController 的这个沉重的 basicVC 类子类,我正在尝试将其转换为 vcprotocol。
它是basicVC,它像上帝一样做所有工作。我想作为 vcProtocol 闯入其中。
我正在尝试做的是关注点分离。并非所有 ViewController 都需要显示警报视图或网络未连接消息。
例如,我有在协议扩展中创建的 indicatorView 作为计算属性。没有错误警告,但没有显示任何指示符。当我尝试调试时,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
}
}
我无法解决如何解决这个问题。因为我只能在协议中具有计算属性。所以我将它们作为仅获取属性。我的计划是使用协议扩展来提供默认实现。
关于如何解决这个问题的任何想法。