美文网首页
UCSafeNotification自己写了一个利用代理实现的好

UCSafeNotification自己写了一个利用代理实现的好

作者: Link913 | 来源:发表于2018-08-03 23:34 被阅读112次

前言

github地址
UCSafeNotification是一个用代理和NSHashTable去做的安全的通知,在释放的时候可以不用刻意去移除观察者,另外由于NSHashTable的特殊性,不需要担心添加重复对象.顺带一下NSPointerArray也能实现类似的功能.

安装

支持cocoapods,在podfile中输入

pod 'UCSafeNotification'

使用

注册通知

导入UCSafeNotificationManager.h文件

[[UCSafeNotificationManager shareManager] addNotifyObj:object notifiName:@"notifiName"];

如果一个对象想成为多个通知的接受者,必须全部注册,例如

[[UCSafeNotificationManager shareManager] addNotifyObj:object notifiName:@"notifiName1"];
[[UCSafeNotificationManager shareManager] addNotifyObj:object notifiName:@"notifiName2"];

遵守UCSafeNotificationProtocol协议,实现ucSafeNotificationWithNotifiName:notifiObj:代理方法即可,例如

- (void)ucSafeNotificationWithNotifiName:(NSString *)notifiName notifiObj:(id)notifiObj{
    
    NSLog(@"%s, %@, %@",__func__, notifiName, notifiObj);
}

发送通知

[[UCSafeNotificationManager shareManager] sendNotifiName:@"notifiName" notifyArgument:@"支持id类型"];

移除通知

不需要刻意去移除,如果非要在对象生命周期结束前移除,那么可以使用下面这三个API.

//在所有的通知里移除这个对象
- (void)removeNotifyObjFromAllNotify:(id)notifyObj;
//移除这个通知中的所有对象
- (void)removeNotifyName:(NSString *)notifyName;
//移除某个通知中的某个对象
- (void)removeNotifyObj:(id)notifyObj fromNotifyName:(NSString *)notifyName;

相关文章

  • UCSafeNotification自己写了一个利用代理实现的好

    前言 github地址UCSafeNotification是一个用代理和NSHashTable去做的安全的通知,在...

  • 代理模式

    1、JDK动态代理: JDK动态代理是实现InvocationHandler接口,然后利用反射新建一个原始类的代理...

  • java面试宝典 五分钟了解spring代理 @Transact

    spring代理分为jdk动态代理和cglib代理 jdk动态代理 jdk动态代理是利用反射机制生成一个实现代理接...

  • Java 动态代理

    前言 关于动态代理 JDK动态代理 CGLIB动态代理 区别 java动态代理是利用反射机制生成一个实现代理接口的...

  • 4.JDK动态代理和CGlib代理

    JDK动态代理: 利用拦截器(拦截器必须实现InvocationHanlder)加上反射机制生成一个实现代理接口的...

  • 动态代理

    Jdk 动态代理 Jdk动态代理,利用反射,实现 InvocationHandler 接口。Jdk 动态代理需要实...

  • Spring AOP(一)

    AOP面向切面编程,实现原理就是利用动态代理的方式,创建一个代理对象,在代理对象中对被代理对象的方法进行增强。Sp...

  • 14.动态代理

    代理模式 java动态代理:利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandle...

  • Spring AOP(一)

    Spring AOP实现原理 动态代理: 利用核心类Proxy和接口InvocationHandler(基于代理模...

  • 18. Tomcat - 结合反向代理实现Tomcat部署

    4. 结合反向代理实现Tomcat部署 4.1 常见部署方式介绍 4.2 利用nginx反向代理实现全部转发置指定...

网友评论

      本文标题:UCSafeNotification自己写了一个利用代理实现的好

      本文链接:https://www.haomeiwen.com/subject/hxkpvftx.html