0

我想从我的应用程序的模型内部深处调试日志消息(NSStrings)到UI中的一个面板(每秒钟2或3行),以呈现适量的调试日志消息(NSStrings)。我预计在开发过程中主要需要这些,尽管我可能会将“控制台”留在生产环境中。我试图保持一个干净的MVC模式,因为我不知道这个应用程序究竟会如何变化(这是一个侧面项目模拟引擎,没有任何商业用途。)正确使用NSNotificationCenter?

我已经实现了一种写入日志消息发送到我的NSWindowController子类中的视图,方法是将一行添加到NSTextView。它工作正常。但是,我不希望我的模型 - 消息的来源 - 知道有关WindowController的任何信息,原因很明显。所以:

  • NSNotificationCenter API似乎符合法案。可以?我的替代方案是一系列的日志机制,将消息传递给模型的日志方法(模型 - >文档 - >窗口控制器 - >视图),这很杂乱,或者让WC充当模型日志方法的代表(使WC采取一个简单的协议。)再一次,这似乎有点令人费解。 KVO似乎不适合这种情况,因为它不是一些模型状态属性正在改变。我错过了什么?

  • 我应该期待通过每秒钟通过多次通知来关闭NSNotificationCenter而导致重大性能下降吗?

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

谢谢

+0

NSLog影响性能。不要计划每隔几秒记录一次。只根据需要进行记录。 – Moshe 2012-07-30 17:41:49

+0

嗨@Moshe这不是关于NSLog,但谢谢。 – 2012-07-30 17:53:26

回答

0

每秒两或三个通知根本不是性能命中。如果您感觉使用NSNotificationCenter,请使用它。对于日志记录机制,可能没有必要,但是 - 对NSLog的简单调用就够了吗?

+0

很高兴知道。我特别想要在用户界面中的信息;与NSLog无关。 – 2012-07-30 17:54:22

+0

那么,不断更新用户界面有点恐怖......但在这种情况下,我们鼓励不要将任何核心视图控制器链接到辅助日志记录机制。 – 2012-07-30 17:56:29

+0

是的。 NSNotifications似乎是这样做的最松散耦合的方式。它无论如何工作。谢谢 – 2012-07-30 18:20:07