返回

直击痛点!iOS 应用开发中如何利用 NotificationCenter 自定义监听事件?

IOS

iOS 应用开发中的 NotificationCenter

在 iOS 应用开发中,NotificationCenter 充当着消息发送者和消息接收者的中介。它可以帮助你轻松实现跨控制器的消息传递。当发布者(发布消息的组件)发出通知时,订阅者(监听消息的组件)可以通过注册监听器的方式来接收通知。这意味着,你可以让不同的组件(如视图控制器、模型对象、自定义类等)之间进行通信。

NSNotificationCenter 进阶

1. 发布通知:

  • 使用 NSNotificationCenter.default.post(name:object:userInfo:) 方法发送通知。
  • 提供一个唯一的消息名称,以便订阅者能够识别它。
  • 你可以传入一个包含数据的对象(object)或一个字典(userInfo)作为通知的附加信息。

2. 订阅通知:

  • 使用 NSNotificationCenter.default.addObserver(forName:object:queue:using:) 方法订阅通知。
  • 提供相同的消息名称和对象,以便能够接收正确的通知。
  • 你可以选择在哪个队列上处理通知,以及使用哪个闭包函数来响应通知。
  • 不要忘记在 deinit 方法中取消订阅通知,以避免内存泄漏。

自定义事件

在某些情况下,你可能需要定义自己的事件,而不仅仅是使用系统预定义的事件。此时,你可以创建一个自定义通知对象(即 NSNotification 对象),然后使用 NSNotificationCenter 发送和订阅这个自定义通知。

1. 创建自定义通知对象:

  • 创建一个包含消息名称、对象和用户信息的自定义通知对象。
  • 使用 Notification.Name(rawValue:) 方法创建消息名称。

2. 发送自定义通知:

  • 使用 NSNotificationCenter.default.post(notification:) 方法发送自定义通知。
  • 提供你刚刚创建的自定义通知对象。

3. 订阅自定义通知:

  • 使用 NSNotificationCenter.default.addObserver(forName:object:queue:using:) 方法订阅自定义通知。
  • 提供与发送通知时相同的自定义消息名称和对象。

4. 处理自定义通知:

  • 在注册的闭包函数中处理自定义通知。
  • 你可以从通知对象中获取消息名称、对象和用户信息。

5. 取消订阅自定义通知:

  • deinit 方法中取消订阅自定义通知,以避免内存泄漏。

演示源代码

源代码链接

结语

通过对 NotificationCenter 的深入探索,你已经掌握了如何自定义事件和发布订阅模式,这将大大提升你的应用的通信能力。无论你是 iOS 应用开发新手还是经验丰富的开发者,我们相信本教程都能够为你提供有益的见解。