最简单的通知方式 - 观察者模式

只需要语言支持以下功能:字典,数组,单例

结构

NotificationCenter 这里简称nc
nc的单例简称为nc.one()

信息传送

nc.one().post(事件名,传递参数)

信息接收

nc.one().add(事件名,事件函数)

如果发送事件,则需要先添加事件侦听,因为观察者模式耦合性低,所以即便不添加观察,事件也是可以发送,只是没有对象接收它而已。观察者最重要的一环是必须在对象销毁前将对象的所有观察全部移除,否则会导致错误,甚至崩溃。

nc内部需要一个核心的字典类 --- dic[事件名,观察者数组]
添加观察时,添加到观察者数组中。
发送事件时,发送遍历观察者数组。
移除观察时,移除dic中所有事件中所有数组查找对应的观察者。

这里需要注意的几点(效率不高,但效率让给了传递事件):

  • 添加观察时需要排除重复添加
  • 移除观察时需要遍历所有位置
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,887评论 1 32
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 30,007评论 8 265
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,124评论 19 139
  • 也许大家最近注意到马男火了,都纷纷表示与其那些鸡汤还是喜欢喝马汤,波杰克马男用直率、不娇柔做作的方式表达出对社会...
    kxob阅读 3,666评论 2 5
  • 近期有很多学琴还有学吉他的小伙伴都留言告诉笔者说想学学即兴伴奏,兴许是看到了笔者发的一些新手文章和视频,想让笔者再...
    黑白的触动阅读 5,266评论 0 5

友情链接更多精彩内容