简化通知中心的使用
中心 通知 简化 使用
2023-09-14 08:57:15 时间
///////////////////////////////////////////////////////////////////////////////////////////
@property (nonatomic, readonly, strong) NSString *name; @property (nonatomic, readonly, weak) id observer;
/////////////////////////////////////////////////////////////////////////////////////////// * 创建通知对象 * @param flag 标签 * @param data 传递的数据 * @return 通知对象 static inline PostObject * POST_OBJECT(NSString *flag, id data) { return [PostObject postObjectWithFlag:flag data:data]; * 处理通知的对象 * @param sender 接收的通知对象 * @return 通知对象 static inline PostObject * ACCESS_POST_OBJECT(id sender) { return [PostObject accessNotificationCenterObject:sender]; * 发送通知消息 * @param name 指定的标签 * @param postObject 通知的对象 static inline void POST_MSG_TO(NSString *name, PostObject *postObject) { [NotificationCenterObject postToRegisterName:name data:postObject]; * 注册通知中心 * @param name 指定的标签 * @param observer 被注册的对象 * @param selector 执行的句柄 * @return 实例对象 static inline NotificationCenterObject * REGISTER_MSG_CENTER_WITH(NSString *name, id observer, SEL selector) { return [NotificationCenterObject withObserver:observer registerName:name selector:selector]; }
微信小程序模板消息接口下线了,不用慌,调用统一服务消息接口来实现相同功能 做过微信开发的应该都有一点感触,就是他的开发文档不是一成不变的,接口有时候会被下线,但也不是一下子就不能用了,一般会兼容旧接口,然后提醒你使用新接口有更多好处。如果接口真的直接下线了,也会提供另一种能够实现相同功能的接口给你替换。所以有天你以为代码都写好了,没有bug了,悠哉悠哉的时候,忽然产品经理说微信的哪个接口不能用了,快去改一下,不要惊讶,老老实实去改就对了哈。
@property (nonatomic, readonly, strong) NSString *name; @property (nonatomic, readonly, weak) id observer;
/////////////////////////////////////////////////////////////////////////////////////////// * 创建通知对象 * @param flag 标签 * @param data 传递的数据 * @return 通知对象 static inline PostObject * POST_OBJECT(NSString *flag, id data) { return [PostObject postObjectWithFlag:flag data:data]; * 处理通知的对象 * @param sender 接收的通知对象 * @return 通知对象 static inline PostObject * ACCESS_POST_OBJECT(id sender) { return [PostObject accessNotificationCenterObject:sender]; * 发送通知消息 * @param name 指定的标签 * @param postObject 通知的对象 static inline void POST_MSG_TO(NSString *name, PostObject *postObject) { [NotificationCenterObject postToRegisterName:name data:postObject]; * 注册通知中心 * @param name 指定的标签 * @param observer 被注册的对象 * @param selector 执行的句柄 * @return 实例对象 static inline NotificationCenterObject * REGISTER_MSG_CENTER_WITH(NSString *name, id observer, SEL selector) { return [NotificationCenterObject withObserver:observer registerName:name selector:selector]; }
// // NotificationCenterObject.m // NotificationCenter // Created by YouXianMing on 15/7/15. // Copyright (c) 2015年 YouXianMing. All rights reserved. #import "NotificationCenterObject.h" @implementation PostObject + (instancetype)postObjectWithFlag:(NSString *)flag data:(id)data { PostObject *postObject = [PostObject new]; postObject.flag = flag; postObject.data = data; return postObject; + (instancetype)accessNotificationCenterObject:(id)sender { PostObject *postData = nil; if ([sender isKindOfClass:[NSNotification class]]) { NSNotification *notiData = sender; if ([notiData.object isKindOfClass:[PostObject class]]) { postData = notiData.object; return postData; @interface NotificationCenterObject () @property (nonatomic, strong) NSString *name; @property (nonatomic, weak) id observer; @property (nonatomic) SEL observerSelector; @property (nonatomic) BOOL haveAddObserver; @implementation NotificationCenterObject + (void)postToRegisterName:(NSString *)name data:(PostObject *)postData { [[NSNotificationCenter defaultCenter] postNotificationName:name object:postData]; + (instancetype)withObserver:(id)observer registerName:(NSString *)name selector:(SEL)selector { NotificationCenterObject *notificationCenterObject = [NotificationCenterObject new]; notificationCenterObject.name = name; notificationCenterObject.observer = observer; notificationCenterObject.observerSelector = selector; notificationCenterObject.haveAddObserver = YES; [[NSNotificationCenter defaultCenter] addObserver:observer selector:selector name:name object:nil]; return notificationCenterObject; - (void)remove { if (self.haveAddObserver == YES _name _observer) { self.haveAddObserver = NO; [[NSNotificationCenter defaultCenter] removeObserver:_observer name:_name object:nil]; - (void)reAdd { if (self.haveAddObserver == NO _name _observer) { self.haveAddObserver = YES; [[NSNotificationCenter defaultCenter] addObserver:_observer selector:_observerSelector name:_name object:nil]; - (void)dealloc { if (self.haveAddObserver == YES) { NSLog(@"已经释放"); [[NSNotificationCenter defaultCenter] removeObserver:_observer name:_name object:nil]; @end
细节
用内联函数将OC风格函数简化为C风格函数,能够稍微缩短代码编写长度,其实并无实用价值,装的成分居多。
微信小程序模板消息接口下线了,不用慌,调用统一服务消息接口来实现相同功能 做过微信开发的应该都有一点感触,就是他的开发文档不是一成不变的,接口有时候会被下线,但也不是一下子就不能用了,一般会兼容旧接口,然后提醒你使用新接口有更多好处。如果接口真的直接下线了,也会提供另一种能够实现相同功能的接口给你替换。所以有天你以为代码都写好了,没有bug了,悠哉悠哉的时候,忽然产品经理说微信的哪个接口不能用了,快去改一下,不要惊讶,老老实实去改就对了哈。
相关文章
- 券商营业部何去何从——组装式智慧财富管理体验中心
- 实现配置中心和配置客户端的服务化
- 讨论k值以及初始聚类中心对聚类结果的影响_K均值聚类需要标准化数据吗
- 与预算相差 5.6 万:2511 万中标周村区智慧城市运行中心(一期)项目
- 搭建Eureka注册中心集群 ,实现负载均衡
- HFish蜜罐与安全运营中心
- android 个人中心下拉弹回效果-PullscrollView
- 【运筹学】线性规划 人工变量法 ( 人工变量法案例 | 第二次迭代 | 中心元变换 | 检验数计算 | 最优解判定 | 选择入基变量 | 选择出基变量 )
- 百亿、千亿级参数的基础模型之后,我们正在步入以数据为中心的时代?
- 开源应用中心 | KodExplorer高效流畅云端存储&协同办公新体验
- SAP 无料号成本中心采购-物料组对应总帐科目详解编程语言
- 亚马逊旱灾和火灾的中心地区有25亿棵树和藤蔓被杀死
- 谷歌对Android 12通知中心进行调整 这看起来有点像小米的MIUI系统
- Linux体验中心:探索新的技术体验(linux体验中心)
- 开启用户中心的Redis机遇(用户中心用redis)
- 利用Oracle云计算实现信息便利化(oracle云计算机中心)
- 高通在美国、慕尼黑起诉魅族,苹果要在深圳建研发中心 | 唯物周刊