我必须建立一个必须包含多个目标的项目。目标是拥有一个代码库,以便与稍后创建的所有目标共享它。我举一个例子:我将有一个用于登录的 UIViewController,但这对于每个目标来说都是不同的。我的想法是拥有一个与每个特定的 LoginViewController 共享的代码库。构建代码的最佳方法是什么?我开始编写一个协议(protocol),如下:
protocol LoginProtocol {
weak var txtUsername: UITextField? { get set }
weak var txtPassword: UITextField? { get set }
weak var btnLogin: UIButton? { get set }
func login()
}
这个想法是在每个 Controller 中实现这个协议(protocol)。
另一种方法是编写一种基本 View Controller ,其他所有 Controller 都将从中继承。像这样:
// MARK: - Instance vars and IBOutlets
class LoginViewController: UIViewController {
@IBOutlet weak var txtUsername: UITextField?
@IBOutlet weak var txtPassword: UITextField?
@IBOutlet weak var btnLogin: UIButton?
override func viewDidLoad() {
super.viewDidLoad()
}
}
extension LoginViewController {
func login() {
print("Hello")
}
}
你觉得怎么样?从架构上来说,最好的选择是什么?
最佳答案
很难“回答”这个问题,因为这在某种程度上是意见......但这是我的意见:
我认为这可以归结为常见的行为:如果您使用协议(protocol),但随后感觉每次实现它时都编写几乎相同的代码......那么您可能需要一个基类。我喜欢协议(protocol)并大量使用它们,但我认为现在人们很快就放弃了基类。 (有利有弊,但很多人不假思索地盲目制定协议(protocol)。)
我有时会使用具有委托(delegate)的基类的混合体来“配置”某些部分。
关于ios - 协议(protocol)或 BaseViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48651977/