前言
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;