Notification Center

Notification Center 是在Cocoa/Cocoa Touch Framework 中,实例之间可以不必互相知道彼此的存在,也可以互相传递讯息、交换资料/状态的机制。

我们可以把Notification Center 想像是一种广播系统。当一个实例A 的状态发生改变,而有多个实例需要知道这个实例发生改变的状况下,实例A 不必直接对这些实例发出呼叫,而是告诉一个广播中心说:「我的状态改变了」,至于其他需要听取状态的物件呢,也只要对这个广播中心订阅(subscribe)指定的通知,所以当实例A 发出通知的时候,这个广播中心就会通知有订阅通知的其他实例。这个广播中心,就是Notification Center。

我们经常使用Notification Center 处理来自操作系统的事件。假如我们现在写了一个日记软体,这个软体里头已经有很多view,每个view 里头都有一篇日记,每篇日记上都有该篇日记的撰写日期与时间。我们通常会使用NSDateFormatter,使用系统偏好设定中的语系(Locale)设定,将日期转成符合语系设定的字串显示,那么,当用户调整了系统偏好设定,像是把中文改成英文,那么,我们原本用中文显示的日期,也应该马上变成用英文显示─我们该怎么做呢?

我们最常使用的通知中心是NSNotificationCenter 这个class,我们也通常使用这个class 的singleton 实例default center(也就是说,其实Notification Center 有好几个,不过我们最常使用的还是这个)。当系统语系改变的时候,Notification Center 就会发出叫做NSCurrentLocaleDidChangeNotification 的这项通知。所以,我们所有要显示日期的画面实例,都应该要订阅这个通知,在收到通知的时候,就要重新产生日期字串。

results matching ""

    No results matching ""