什么是通知(Swift3)?

最近,有一位朋友告诉我,在最近的一次采访中,有人问她有关Notification的经历。 我认为稍微研究一下会很有用。

我了解到的一件事是,通知中心(以前称为NSNotificationCenter)适合观察者设计模式,该对象在其中将任何更新或更改通知其他对象。 Apple的文档指出,“ NSNotificationCenter对象(或简称为通知中心)提供了一种在程序内广播信息的机制。”换句话说,Notification就像广播消息的广播电台一样。 这样, 发送者 (广播或广播电台)发出消息, 观察者 (听者)可以决定何时收听以及收听什么内容。 基本上,通知提供了一种在应用程序内传递信息的方法,而类之间没有直接引用。

通知中心会跟踪关注特定通知的所有不同类型的观察者,因此在发布通知时,通知中心会将消息发布到已为该通知注册的每个观察者。

要设置通知中心,需要3个步骤:

步骤1:将事件(消息)发布到通知中心,该事件将通知要侦听此特定消息的所有对象。

步骤2:将观察者(侦听器)添加到通知中心。

步骤3:编写一个代码块,该代码块在发生通知时被调用(收到通知后您将要做什么?)。

我制作了一个带有标签栏控制器的简单应用程序。

标签1:显示随机的海洋图像。

选项卡2:如果用户喜欢选项卡1中的图像,则选项卡2将向他们显示另一个随机海洋图像。

在上面,我向NotificationCenter.default发布了一个名为“ LikedItNotification”的通知。一旦用户单击FirstViewController中的 Like Like按钮,该通知就会被发布!

在上面,我为在FirstViewController中创建的通知创建了一个观察者(侦听器)。 我还编写了将在收到通知后执行操作的代码。 在这种情况下,我的操作是取消隐藏youLikedItLabel并将随机图像分配给SecondViewController中的imageView。

埃里卡(Erica),如果您在想,我觉得您可以通过使用单例来做类似的事情,您是对的。 看来NotificationCenter只是让您的班级互相交谈的另一种方式。 我的理解是,如果整个应用程序需要了解特定的通知(即显示键盘,用户确实登录/注销),则可以最佳地利用NotificationCenter。

这是我完成的应用程序的演示视频!

希望您今天了解到有关NotificationCenter的新知识。 您可以在此处下载项目。

资源:

Apple文档— NSNotificationCenter

视频— Swift 3中的iOS通知中心

停止使用NSNotificationCenter

Ray Wenderlich — iOS设计模式:观察者模式