NSNotificationCenter作为整个应用程序的主要事件调度程序

时间:2015-09-21 15:54:51

标签: ios xcode swift

使用NSNotificationCenter作为应用内所有事件的唯一处理程序是否正确?

如果我列出所有可能的事件列表,那就没关系了:

override func viewDidLoad() {
    super.viewDidLoad()

    NSNotificationCenter.defaultCenter().addObserver(self, selector: "loginUser:", name: "userWillLogin", object: nil)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "showError:", name: "userLoginError", object: nil)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "loadMainScreen:", name: "userDidLogin", object: nil)
    // Is it ok if I put 10 or 20 more event listeners here?

}

或者这个功能的意图是不同的?我发现以这种方式使用事件监听器和处理程序很有吸引力,但不确定它是否是推荐的方式在应用程序中传递有关性能和最佳实践的事件和数据。

1 个答案:

答案 0 :(得分:0)

当仅使用通知时,您会发现自己遇到麻烦,无法调试发生的事情。通知可以很难追踪错误,因为并不总是显而易见的是流程是什么。在某些情况下你应该使用它们,但不要总是通过通知来做 - 它的可读性较差。

最好的方法是将delegate模式/ blocks用于1:1关系,将NSNotificationCenter / KVO用于1:n关系。

点击此链接:http://nshipster.com/nsnotification-and-nsnotificationcenter/