MHMessageKit 1.5.0

MHMessageKit 1.5.0

Milen Halachev维护。



  • Milen Halachev

MHMessageKit

Build Status

安装

Swift包管理器

MHMessageKit添加到您的Swift包依赖项。

Carthage

github "KoCMoHaBTa/MHMessageKit"添加到您的Cartfile中,然后直接将框架嵌入到您的项目中。

Cocoapods

pod 'MHMessageKit'添加到您的Podfile

子模块

在您的存储库中添加一个子模块,然后直接将框架嵌入到您的项目中

手动方式

下载,然后直接将框架嵌入到您的项目中

亮点

  • 提供了对Foundation通知API的扩展,以便发送和接收强类型自定义通知,对Swift来说非常方便
  • 提供了对Foundation通知API的扩展,以便以弱引用的形式订阅通知,当不再使用时将自动取消订阅
  • 提供了一种独立的消息抽象
  • 通过Foundation的通知API提供对所提供消息抽象的默认实现

您可以独立使用上述任何功能

强类型自定义通知消息

与对NotificationCenterNotificationQueue的扩展结合,所定义的NotificationMessage协议将允许您发送和接收自定义强类型通知。

  • 使任何自定义类型符合NotificationMessage
  • 使用NotificationCenter - 订阅以接收您的自定义消息
  • 使用NotificationCenter - 发布您自定义消息的实例
  • 使用NotificationQueue - 将您自定义消息的实例入队

弱观察者

你知道,当你不再需要观察者时,你总是需要在析构时取消订阅它们,通常在dealloc中。而当你使用从NotificationCenter来的基于块的API时,情况就更加不方便了——你必须存储观察者引用,并在你的类被析构时再次取消订阅。

嗯,为了节省大量的样板代码——我们引入了弱观察者。基本上,你使用相同的API,但你的观察者在 dealloc 时会自动取消订阅。这意味着你不再需要关心取消订阅——只需订阅即可。

为了利用这个特性,请使用添加到NotificationCenter的方法

  • addWeakObserver(_:selector:name:object:)
  • addWeakObserver(forName:object:queue:using:) -> NSObjectProtocol
  • addWeakObserver(forObject:queue:handler:) -> NSObjectProtocol
  • subscribe(_:) -> WeakMessageSubscription

独立消息抽象

如果你需要一个独立的消息抽象——如果有适合你的话,这里有一个。

它定义如下

  • Message - 一种可以通过发布者和订阅者发送和接收的类型
  • MessagePublisher - 一种可以发送消息的类型
  • MessageSubscriber - 一种管理消息订阅的类型
  • MessageSubscription - 表示消息订阅的类型
  • WeakMessageSubscription - 表示弱消息订阅的类型
  • StaticMessageHandler - 一种静态注册和注销订阅的类型
  • StaticSubscriptionContainer - 一种静态存储订阅的类型
  • StaticWeakSubscriptionContainer - 一种静态存储弱订阅的类型

独立消息抽象 - 默认实现

以下提供了一个基于Foundation通知API的默认实现

  • NotificationCenter: MessageSubscriber
  • NotificationCenter: MessagePublisher
  • NotificationQueue: MessagePublisher

这意味着,为了使用这个基础设施,你必须

  • 使你的自定义类型遵从Message协议
  • 订阅和发布你的自定义消息

预先,你可以

  • 定义自己的静态处理器类型,使其遵从StaticMessageHandlerStaticSubscriptionContainer以及/或StaticWeakSubscriptionContainer