Swift通知的使用方式

Swift Notification

这里我们先大概梳理下普通通知的使用方式:

  1. 注册监听
override func viewDidLoad() {
        super.viewDidLoad()
        NotificationCenter.default.addObserver(self, selector: #selector(test(_ :)), name: NSNotification.Name(rawValue: "TESTNOTIFY"), object: "the object content")
}
  1. 实现监听后执行的方法
func test(_ notify: Notification) {
        print(notify.object ?? "nil")
}
  1. 发送通知
NotificationCenter.default.post(name: Notification.Name(rawValue: "TESTNOTIFY"), object: "hello")

问题

大家会发现监听的时候实际是做了两步,代码比较分散,不容易管理. 这个也正是ZRNotify能帮我们解决的部分

pod方式安装

pod 'ZRNotify', '~> 0.0.5'

使用

调用方式一: 分开监测

lazy var zrNotify: ZRNotify = {
    var zrnotify = ZRNotify()
    zrnotify.on("ScheduleA", notify: { notify in
        
        print(notify.object ?? "nil object")
    }).on("ScheduleB", notify: { notify in
        
        print(notify.object ?? "nil object")
    }).on("ScheduleC", notify: { notify in
        
        print(notify.object ?? "nil object")
    })
    
    return zrnotify
 }()

调用方式二: 统一监测

lazy var zrNotifys: ZRNotify = {
    var zrnotify = ZRNotify()
    zrnotify.ons(["Schedule1", "Schedule2", "Schedule3"], notify: { notify in
        
        print(notify.object ?? "nil object")
    })
    
    return zrnotify
}()

初始化通知接收

override func viewDidLoad() {
    super.viewDidLoad()
    
    // 初始化
    zrNotify.opStatusForAll(true)
    zrNotifys.opStatusForAll(true)
    
    // 测试
    NotificationCenter.default.post(name: Notification.Name(rawValue: "ScheduleA"), object: "hello ScheduleA")
    NotificationCenter.default.post(name: Notification.Name(rawValue: "ScheduleB"), object: nil)
    NotificationCenter.default.post(name: Notification.Name(rawValue: "ScheduleC"), object: "hello ScheduleC")
    
    // 测试
    NotificationCenter.default.post(name: Notification.Name(rawValue: "Schedule1"), object: "hello Schedule1")
    NotificationCenter.default.post(name: Notification.Name(rawValue: "Schedule2"), object: nil)
    NotificationCenter.default.post(name: Notification.Name(rawValue: "Schedule3"), object: "hello Schedule3")
}

取消监听

zrNotify.remove("ScheduleA")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,736评论 4 61
  • 也许很多人都不相信星座这一说,但是事实上当你很了解一个星座的时候,你看到就能猜到他是什么星座。至于我,最了解的是摩...
    不小不阅读 5,900评论 0 0
  • 似乎: 在家的日子越来越短 相聚的时光渐行渐远 妈妈的唠叨日渐冗繁 爸爸的言辞不具威严 只是: 越来越短的日子让人...
    钱眼儿阅读 2,662评论 0 0
  • Exercise 10-Precession of the Perihelion of Mercury (4.10...
    大乔治阅读 1,950评论 0 0
  • 虽然生活就是平淡的,但不是所有人都能把白开水变成香茗。由此可见,生活对于每个人来说意义不同,所创造的价值也不尽相同...
    LydiaMa阅读 1,333评论 0 0

友情链接更多精彩内容