【问题标题】:Correct use of NSNotificationCenter?正确使用 NSNotificationCenter?
【发布时间】:2012-07-30 17:29:07
【问题描述】:

我想将适量的调试和日志消息 (NSString) 从我的应用模型深处呈现到 UI 中的面板,大约每秒 2 或 3 行。我预计在开发过程中主要需要这个,尽管我可能会将“控制台”留在生产中。我试图保持一个干净的 MVC 模式,因为我不知道这个应用程序会变成什么样子(它是一个辅助项目模拟引擎,没有商业用途。)

我已经实现了一种方法,通过在 NSTextView 中附加一行来将日志消息写入我的 NSWindowController 子类中的视图。它工作正常。但是,出于显而易见的原因,我不希望我的模型(消息的来源)了解有关 WindowController 的任何信息。所以:

  • NSNotificationCenter API 似乎符合要求。可以?我的替代方案是一系列日志机制,将消息向上传递链(模型->文档->窗口控制器->视图),这很混乱,或者让 WC 充当模型日志方法的委托(使 WC采用一个简单的协议。)再一次,这似乎有点草率。 KVO 似乎不太适合这个,因为它不是一些模型状态属性正在改变。我错过了什么吗?

  • 我是否应该期望通过每秒发送多个通知来猛击 NSNotificationCenter 会显着影响性能?

编辑:我应该说,它确实有效,但是对吗?

谢谢

【问题讨论】:

  • NSLog 影响性能。不要计划每隔几秒钟记录一次。仅在需要时记录。
  • 嗨@Moshe,这不是关于 NSLog,但谢谢。

标签: objective-c macos model-view-controller nsnotificationcenter


【解决方案1】:

每秒两个或三个通知根本不会影响性能。如果您觉得使用 NSNotificationCenter,请使用它。但是,对于日志记录机制,这可能是不必要的 - 对 NSLog 的简单调用还不够吗?

【讨论】:

  • 很高兴知道。我特别想要 UI 中的信息;与 NSLog 无关。
  • 嗯,持续更新 UI 有点吓人……但当然,在这种情况下,建议不要将任何核心视图控制器链接到辅助日志记录机制。
  • 是的。 NSNotifications 似乎是最松耦合的方式。无论如何它都有效。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
  • 2016-08-25
  • 1970-01-01
  • 2023-03-17
  • 2010-12-28
相关资源
最近更新 更多