• 运用runtime与AOP实现oc中的kvo


    前言: oc中实现的kvo观察者模式比较呆板,不支持block,运用runtime机制将其进行实现。

    详细实现步骤:

    一:给NSObject添加分类(添加相应的添加观察者,删除观察者的方法),这样凡是继承NSObject的类生成的对象都会拥有这两个方法。

    二:在添加观察者的方法中,检查本类是否有观察者想要观察的属性。如果有,进行下一步。

    三:检查是否已经给该对象的这个属性的set方法进行了方法实现的替换,如果没有进行下一步,如有进行第五步。

    四: 将这个属性的set方法的实现指向aop方法,并且添加一个相应的方法指向原有set方法的实现。

    五:将观察者(可以是封装有观察者属性的对象,我就是封装了一个其他的类)添加到自己的字典中(我用的是一个字典,也可以是其他的模型) 。

    六:书写aop方法,aop方法实现对原先set方法的调用, 并且实现对观察者的广播。(两个方法的调用顺序可以自定义,这就是aop前切和后切)

     提示: 

    上述只是一个简单的流程步骤,留言提供源码,欢迎共同讨论学习。 

  • 相关阅读:
    爬虫之爬取淘宝主题市场主要产品信息
    Linux内核11-定时器和时间管理
    UNIX8-进程控制
    UNIX7-进程环境
    Unix3-文件I/O接口
    Linux进程-打开的文件
    递归与二叉树_leetcode230
    递归与二叉树_leetcode235
    递归与二叉树_leetcode226
    递归与二叉树_leetcode222
  • 原文地址:https://www.cnblogs.com/Sunnyheart/p/4979287.html
Copyright © 2020-2023  润新知