协议或BaseViewController

时间:2018-02-06 21:07:55

标签: ios swift protocols

我必须设置一个必须包含多个目标的项目。目标是拥有一个代码库,以便与稍后创建的所有目标共享它。我举了一个例子:登录时我会有一个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")
    }
}
你怎么看?什么是最好的选择,在建筑上?

1 个答案:

答案 0 :(得分:0)

坚持“回答”这个,因为它在某种程度上是意见......但这是我的意见:

我认为它可以归结为常见的行为:如果你使用协议,但是每次实现它时感觉你写的几乎都是相同的代码......那么你可能想要一个基类。我喜欢协议并大量使用它们,但我认为人们现在太快就不能解雇基类了。 (有利有弊,但很多人盲目地制定协议而不考虑它。)

我有时会使用具有委托的基类的混合来“配置”某些部分。