(七十二)自定义通知NSNotification实现消息传递
2015-07-16 21:54
344 查看
众所周知,iOS中一般在类之间传递消息使用较多的是delegate和block,还有一种是基于通知进行的消息传递,我们常常是使用系统的通知,来实现一些功能,例如利用键盘尺寸改变的通知,我们可以根据键盘的位置改变输入框的位置,从而避免输入框被键盘遮挡。
除了利用系统的通知,我们还可以通过自己创建通知的办法来完成一些消息传递,以XMPP登录为例,如果用户之前没有注销,那么在启动客户端时应该自动登录,登录在XMPP的工具类完成,而当前视图在登陆完成之前应当用网络连接的指示器(Activity Indicator)旋转指示,而连接完成后应当隐藏指示器,何时连接成功就需要工具类通知视图控制器,我们这次用通知来实现。
通知要实现非常简单,只需要监听和发送即可,回忆一下当时监听键盘,需要指定通知的名称,标准格式是类名+功能+Notification,比较长,因此用一个常量字符串来获取类名,防止输入错误。
①创建常量字符串:
直接在发送通知的.m头部写:
③发送一个通知:
除了利用系统的通知,我们还可以通过自己创建通知的办法来完成一些消息传递,以XMPP登录为例,如果用户之前没有注销,那么在启动客户端时应该自动登录,登录在XMPP的工具类完成,而当前视图在登陆完成之前应当用网络连接的指示器(Activity Indicator)旋转指示,而连接完成后应当隐藏指示器,何时连接成功就需要工具类通知视图控制器,我们这次用通知来实现。
通知要实现非常简单,只需要监听和发送即可,回忆一下当时监听键盘,需要指定通知的名称,标准格式是类名+功能+Notification,比较长,因此用一个常量字符串来获取类名,防止输入错误。
①创建常量字符串:
直接在发送通知的.m头部写:
NSString *const WCLoginStatusChangeNotification = @"WCLoginStatusNotification";然后在.h中声明,以便监听通知时调用:
extern NSString *const WCLoginStatusChangeNotification;②让视图控制器监听通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginStatusChange:) name:WCLoginStatusChangeNotification object:nil];然后实现监听方法,参数为NSNotification对象,其中有一个userInfo成员属性用于传递消息,是一个字典。
③发送一个通知:
[[NSNotificationCenter defaultCenter] postNotificationName:WCLoginStatusChangeNotification object:nil userInfo:<字典>];传递参数利用的是userInfo参数,只需要赋一个字典,即可传递到监听的事件函数中。
相关文章推荐
- oracle用户和表空间
- linux之配置IP地址
- ThreadPoolExecutor运转机制详解
- 怎样更健康解决一个人时的性需求
- leetcode83 Remove Duplicates from Sorted List
- poj1236 强连通分量+缩点
- Objective-C编码规范:26个方面解决iOS开发问题
- mysql或则oracle的declare可以放在操作语句的后面吗?
- Mac新手操作指南(五)
- java EE之jsp的7个动作指令 复习
- vimrc for windows
- AFNetworking2.0源码解析AFURLResponseSerialization
- 架构师速成6.6-知识的收集整理学习
- AIX PASE 和unix
- 架构师速成6.6-知识的收集整理学习 分类: 架构师速成 2015-07-16 21:50 254人阅读 评论(0) 收藏
- 指针注意
- Android Studio使用Git@SC分享项目
- 开发基于 IBM Lotus Domino 的 Web 2.0 应用的最佳实践
- java EE之jsp脚本和3个编译指令 复习
- ip正则