自己设计一个通知中心
核心就是操作两个Table及一个链表。
1、先创建一个通知中心的单例,里边有一个NSHashTable,并提供三个方法,添加、移除观察者和发送通知
2、添加观察者的时候,将key位唯一标示的通知名,value为另一个hash表,因为注册的时候可以传入一个参数object用于只监听指定对象发出通知,所以key为object,value为以链表形式保存的所有观察者。
3、发送通知的时候,通过key取出对应的object(如果传nil,即为nil_key),遍历链表依次触发观察者的方法并传递参数
4、移除观察者的时候,直接删除key对应hash表中的数据

网友评论