UIView 应该观察通知吗?

Should a UIView Observe Notification?

我在 iOS 工作,我有一个自定义视图,

class MyView: UIView {

}

我的一个 ViewControllers 正在使用自定义视图,例如

class MyViewController: UIViewController {

    viewDidLoad(){
        let view = MyView() // ...
    }

}

我的自定义视图 MyView 需要观察通知,所以我将其添加到 MyView's init 中并在 dealoc 块中删除,例如,

class MyView: UIView {

    init() {
        addObserver(...)
    }

    dealloc {
        removeObserver(...)
    }
}

我的一位同事评论说,View 不应该负责处理观察者,而是关联的 ViewControllers 应该处理它。我的设计有什么问题吗?如果我按照目前的设计,未来可能会遇到什么问题?

如果您遵循 MVC/MVVM 或类似的最佳建模实践,您的视图应尽可能 'dumb',并且只呈现 ViewController 告诉它们的内容。

将观察者添加到 UIView 会直接将该视图与您的应用程序逻辑紧密耦合。这使得视图的可重用性降低,并导致您的应用程序逻辑更难以推理和测试该逻辑是否在此视图及其控制器之间拆分。