gpt4 book ai didi

ios - 子类中的空白函数是否符合自定义协议(protocol)?

转载 作者:行者123 更新时间:2023-12-01 16:05:05 25 4
gpt4 key购买 nike

我的应用程序中有两个主屏幕,目前都只是 UIViewController 的子类.这两个 View Controller 非常相似——它们都实现了我的自定义子类 UIView调用HeaderView负责显示信息和接受用户输入。就目前而言,此代码是重复的,因为 HeaderView两个 View Controller 的设置是相同的——唯一的区别是当用户确认 HeaderView 中的文本输入时会发生什么。 .
为了减少重复代码,我创建了一个名为 InputViewController 的类(UIViewController 的子类)包含两个相同的 View Controller 的方面。最终,我希望这两个 View Controller 继承 InputViewController而不是 UIViewController .

class InputViewController: UIViewController, InputProtocol {

private let headerView = HeaderView()

override func viewDidLoad() {
super.viewDidLoad()
// layout, etc.
setupCallbacks()
}

internal func setupCallbacks() {
headerView.onUpdate = { (text: String) in
// called when user confirms text entry in headerView
self.onHeaderUpdate()
}
}

internal func onHeaderUpdate() {} // Blank function

}
setupCallbacks()onHeaderUpdate()是协议(protocol)中定义的方法, InputViewController符合。 HeaderView实现在 setupCallbacks() 中处理的回调闭包通过 headerView.onUpdate... InputViewController 的协议(protocol)符合:
protocol InputProtocol {
func setupCallbacks()
func onHeaderUpdate()
}
为了说明这一点,我画了一个图表;
diagram
因为我想要 InputViewController 的子类覆盖 onHeaderUpdate()方法,是否保留 onHeaderUpdate() 的定义?在 InputViewController空白还是有其他解决方案?

最佳答案

is it conventional to leave the definition of onHeaderUpdate() in InputViewController blank


是的,这称为抽象方法。给它故意崩溃的代码是很常见的,作为一种说法,“我的存在只是为了在子类中被覆盖。”
(我应该进一步说,您正在创建的基本 View Controller 执行所有子类必须实现的初始配置,这也是正常的。)

关于ios - 子类中的空白函数是否符合自定义协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63831683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com