登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
1
2
/ 2 页
下一页
返回列表
首页
›
业界区
›
安全
›
通知(发布/订阅)
通知(发布/订阅)
[ 复制链接 ]
兑谓
2025-9-30 11:46:18
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
认真对待每时、每刻每一件事,把握当下、立即去做。
iOS 中的通知(Notification)是一种广泛使用的通信机制,它允许不同组件、模块或应用程序间以一种松耦合的方式传递信息。通知机制的核心是NSNotificationCenter(通知中心),它作为中介,负责发布(post)和分发(deliver)通知。
1. 通知原理
发布者(Poster)与订阅者(Observer):
发布者:某个对象(通常是类实例)在特定时刻或条件满足时,向通知中心发送一条通知。通知通常包含一个唯一的名称(NSString 对象,即通知名称或NSNotificationName)、可选的用户信息(NSDictionary 对象,携带附加数据)。
订阅者:对特定通知感兴趣的对象通过向通知中心注册,成为该通知的订阅者。订阅者指定想要监听的通知名称,并提供一个回调方法(或一个实现了observe(_:selector:name
bject
方法的观察者对象),当通知中心接收到匹配的通知时,会调用订阅者的回调方法。
2. 通知中心
通知中心(NSNotificationCenter):
系统提供的单例对象,负责协调发布者与订阅者之间的通信。它维护一个内部的数据结构(如映射表),存储订阅者与它们关注的通知之间的映射关系。
发布通知:
发布者通过调用NotificationCenter.default.post(name
bject:userInfo
方法,将通知(包括名称、可选的关联对象和用户信息)发送给通知中心。
接收通知:
订阅者通过以下两种方式之一注册监听:
使用 Block 回调:调用NotificationCenter.default.addObserver(forName
bject:queue:using
方法,传入一个闭包来处理接收到的通知。
使用 Selector(方法)回调:调用NotificationCenter.default.addObserver(_:selector:name
bject
方法,传入订阅者对象(self)、要调用的方法(Selector)以及通知的名称和关联对象。
3. 通知分发
通知分发:当通知中心收到发布者发送的通知后,它会查找已注册的订阅者列表,检查是否有订阅者对这条通知感兴趣。如果有匹配的订阅者,通知中心会按照注册时指定的队列(对于 Block 回调)或直接在订阅者所在的线程(对于Selector 回调)上执行相应的回调,从而将通知信息传递给订阅者。
4. 使用场景
通知在 iOS 开发中有多种应用场景,适用于以下情况:
4.1 跨组件通信
同一应用内:不同视图控制器、模型对象、服务类等组件间,当一个组件的状态变化需要告知其他组件但它们之间没有直接引用关系时,可以通过通知来解耦。
应用与框架/库之间:第三方库或系统框架(如 UIKit、CoreData 等)可能会通过通知来报告重要事件,应用程序可以订阅这些通知来响应框架的变化。
4.2 生命周期事件
系统事件:iOS 系统会发送一系列全局通知,如应用进入后台、恢复前台、内存警告等,开发者可以通过监听这些通知来适配系统状态变化。
界面相关:如键盘弹出与隐藏、屏幕旋转等,通过监听相关通知可以调整 UI 布局或行为。
4.3 异步任务与数据更新
网络请求完成:在网络请求成功或失败后,发送通知告知 UI 或其他依赖数据的组件数据已更新,无需直接调用接口等待结果。
定时任务:定时器触发时发送通知,通知其他组件进行定时操作或数据刷新。
4.4 可撤销的操作
撤销/重做:在实现撤销/重做功能时,可以使用通知来同步撤销栈的状态,使得各相关组件能够及时响应撤销/重做操作。
5. 注意事项
尽管通知机制简化了跨组件通信,但因其一对多的广播特性,需要注意以下几点。
性能影响:大量订阅者监听同一通知时,可能会对性能产生一定影响。因此,应合理使用通知,避免不必要的全局广播。
内存管理:订阅者需在适当的时候(如视图控制器的 deinit 方法中)调用removeObserver(_:name
bject
方法注销监听,防止因订阅者提前释放导致的崩溃。
同步/异步:通知分发既可以同步(在发布者的线程上立即执行回调)也可以异步(在指定的队列上执行)。选择合适的分发方式以避免阻塞主线程或引发竞态条件。
综上所述,iOS 中的通知机制基于发布/订阅模式,通过 NSNotificationCenter 实现跨组件、跨层级的信息传递。它适用于各种需要解耦通信的场景,但在使用时需注意性能、内存管理和异步问题。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
通知
发布
订阅
相关帖子
OpenClaw+优云智算Coding Plan:从灵感到成文,再到公众号发布的全流程AI自动化
团结引擎发布小游戏与js版本SDK的互相调用
团结引擎发布小游戏与js版本SDK的互相调用
团结引擎发布小游戏与js版本SDK的互相调用
Spring AI 1.1.3 正式发布,19 个新特性太顶了!
【译】 再次革新 .NET 的构建和发布方式(二)
Spring Boot 4.0.5 正式发布,又一项技术被弃用了。。
【译】 再次革新 .NET 的构建和发布方式(三)
Rudist 0.4.3 发布:让 AI Agent 替你操作 Redis
Rudist 0.4.3 发布:让 AI Agent 替你操作 Redis
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
OpenClaw+优云智算Coding Plan:从灵感到成文,再到公众号发布的全流程AI自动化
0
495
墨佳美
2026-03-25
安全
团结引擎发布小游戏与js版本SDK的互相调用
0
568
杠氯
2026-03-25
安全
团结引擎发布小游戏与js版本SDK的互相调用
0
648
敖可
2026-03-25
安全
团结引擎发布小游戏与js版本SDK的互相调用
0
54
毋献仪
2026-03-25
安全
Spring AI 1.1.3 正式发布,19 个新特性太顶了!
0
19
决任愧
2026-03-26
安全
【译】 再次革新 .NET 的构建和发布方式(二)
0
190
溜椎干
2026-03-29
安全
Spring Boot 4.0.5 正式发布,又一项技术被弃用了。。
0
672
魄柜
2026-03-30
业界
【译】 再次革新 .NET 的构建和发布方式(三)
0
783
轨项尺
2026-03-30
业界
Rudist 0.4.3 发布:让 AI Agent 替你操作 Redis
0
537
邰怀卉
2026-04-01
业界
Rudist 0.4.3 发布:让 AI Agent 替你操作 Redis
0
573
痕厄
2026-04-01
回复
(32)
忙贬
2025-10-8 07:32:09
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
这个好,看起来很实用
副我
2025-10-30 04:49:18
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢分享,学习下。
睁扼妤
2025-11-19 01:05:20
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
东西不错很实用谢谢分享
欧阳梓蓓
2025-11-27 10:34:48
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
分享、互助 让互联网精神温暖你我
茅香馨
2025-11-29 22:44:09
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
很好很强大 我过来先占个楼 待编辑
段干叶农
2025-12-13 22:31:01
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
懂技术并乐意极积无私分享的人越来越少。珍惜
僭墙覆
2025-12-15 03:11:01
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
谢谢分享,试用一下
蔓好
2025-12-24 04:49:41
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢分享
荏牌
2026-1-10 23:29:53
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
用心讨论,共获提升!
骆贵
2026-1-11 03:59:31
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
新版吗?好像是停更了吧。
段干叶农
2026-1-16 15:48:57
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个好,看起来很实用
诘琅
2026-1-19 10:31:11
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个有用。
赘暨逢
2026-1-19 10:34:46
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
很好很强大 我过来先占个楼 待编辑
阕阵闲
2026-1-21 03:38:07
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个有用。
博咱
2026-1-21 06:47:21
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
感谢分享,学习下。
溶绚
2026-1-23 04:37:00
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
yyds。多谢分享
但婆
2026-1-26 12:12:10
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
分享、互助 让互联网精神温暖你我
匡菲
2026-1-27 06:53:09
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
喜欢鼓捣这些软件,现在用得少,谢谢分享!
决任愧
2026-1-28 09:20:04
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
分享、互助 让互联网精神温暖你我
下一页 »
1
2
/ 2 页
下一页
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
业界
科技
签约作者
程序园优秀签约作者
发帖
兑谓
2026-1-28 09:20:04
关注
0
粉丝关注
22
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991125
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
神泱
9539
6
宋子
9880
7
韶又彤
9911
8
注思
9034
9
荪俗
9023
10
诀锺
9036
查看更多
今日好文热榜
72
记一次Webshell流量分析2 | 添柴不加火
451
记一次Webshell流量分析2 | 添柴不加火
136
记一次Webshell流量分析2 | 添柴不加火
725
记一次Webshell流量分析2 | 添柴不加火
66
记一次Webshell流量分析2 | 添柴不加火
405
AI元人文:在荆棘中开路——对四个实践性追
928
记一次Webshell流量分析2 | 添柴不加火
0
Python模块与包管理完全指南:从入门到精通
420
记一次Webshell流量分析2 | 添柴不加火
0
Python模块与包管理完全指南:从入门到精通
268
AI元人文:在荆棘中开路——对四个实践性追
575
记一次Webshell流量分析2 | 添柴不加火
84
记一次Webshell流量分析2 | 添柴不加火
158
记一次Webshell流量分析2 | 添柴不加火
874
记一次Webshell流量分析2 | 添柴不加火
146
记一次Webshell流量分析2 | 添柴不加火
824
记一次Webshell流量分析2 | 添柴不加火
497
AI元人文:在荆棘中开路——对四个实践性追
873
记一次Webshell流量分析2 | 添柴不加火
150
记一次Webshell流量分析2 | 添柴不加火