MHMessageKit
安装
Swift包管理器
将MHMessageKit
添加到您的Swift包依赖项。
Carthage
将github "KoCMoHaBTa/MHMessageKit"
添加到您的Cartfile
中,然后直接将框架嵌入到您的项目中。
Cocoapods
将pod 'MHMessageKit'
添加到您的Podfile
子模块
在您的存储库中添加一个子模块,然后直接将框架嵌入到您的项目中
手动方式
下载,然后直接将框架嵌入到您的项目中
亮点
- 提供了对Foundation通知API的扩展,以便发送和接收强类型自定义通知,对Swift来说非常方便
- 提供了对Foundation通知API的扩展,以便以弱引用的形式订阅通知,当不再使用时将自动取消订阅
- 提供了一种独立的消息抽象
- 通过Foundation的通知API提供对所提供消息抽象的默认实现
您可以独立使用上述任何功能
强类型自定义通知消息
与对NotificationCenter
和NotificationQueue
的扩展结合,所定义的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
协议 - 订阅和发布你的自定义消息
预先,你可以
- 定义自己的静态处理器类型,使其遵从
StaticMessageHandler
和StaticSubscriptionContainer
以及/或StaticWeakSubscriptionContainer