我必须设置一个必须包含多个目标的项目。目标是拥有一个代码库,以便与稍后创建的所有目标共享它。我举了一个例子:登录时我会有一个UIViewController
,但每个目标都会有所不同。我的想法是拥有一个代码库来与每个特定的LoginViewController
共享。构造代码的最佳方法是什么?我开始编写协议,这里是:
protocol LoginProtocol {
weak var txtUsername: UITextField? { get set }
weak var txtPassword: UITextField? { get set }
weak var btnLogin: UIButton? { get set }
func login()
}
这个想法是在每个控制器中实现这个协议。
另一种方法是编写一种其他控制器将继承的基本视图控制器。像这样:
// 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")
}
}
你怎么看?什么是最好的选择,在建筑上?
答案 0 :(得分:0)
坚持“回答”这个,因为它在某种程度上是意见......但这是我的意见:
我认为它可以归结为常见的行为:如果你使用协议,但是每次实现它时感觉你写的几乎都是相同的代码......那么你可能想要一个基类。我喜欢协议并大量使用它们,但我认为人们现在太快就不能解雇基类了。 (有利有弊,但很多人盲目地制定协议而不考虑它。)
我有时会使用具有委托的基类的混合来“配置”某些部分。