iPhone开发之NSNotificationCenter(通知)的使用方法

NSNotificationCenter 是 Cococa消息中心,统一管理单进程内不同线程的消息通迅,其职责只有两个:

1,提供“观查者们”对感兴趣消息的监听注册;

  1. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(printName:) name: @"messageName" object:nil];

a, defaultCenter,消息中心只有一个,通过类方法获取它的单例。

b, addObserver,添加监听者实例,此处为当前实例

c, selector,observer中的一个方法指针,当有消息的时候会执行此方法,并把相关上下文以参数传递过去

d, name,注册所关心消息的名称,

e, object,这个是对消息发送方的一个过滤,此参数据说明当前监听器仅对某个对象发出的消息感兴趣。

整体意思:

向消息中心中注册一个“监听者”(当前实例self, 相当于Java里的this)。当有名为NSWindowDidBecomeMainNotification 的消息发送到消息中心时,执行本实例的aWindowBecameMain方法。

2,接收“消息”,并把消息发送给关心它的“观查者们”

消息的推送:

代码 
  1. [[NSNotificationCenter defaultCenter] postNotificationName:@"messageName" object:nil userInfo: [NSDictionary dictionaryWithObject:@"jory" forKey:@"name"|^Archive.zip]];

a, postNotificationName,推送消息的名称,匹配在注册消息监听者时的消息名称。

b, object, 发送消息的实例

c, userInfo,发送消息时附带的消息上下文,此实例为一个字典实例(相当于Java里的HashMap)。

3,当有消息推送到消息中心后,会把此消息发送给相关的“监听者”,并会执行消息注册时的方法:

C代码  
  1. -(void)printName:(id)sender{
  2. NSString *name = [[sender userInfo] objectForKey:@"name"];
  3. NSLog(@"name: %@",name);
  4. }

方法很简单,从消息上下文中(发送消息时的 userInfo),获取"name"并打印。

iPhone软件开发的时候会遇到这种情况:打开APP后会在后台运行某个方法,例如下载文件,下载完成后可能需要调用某个方法来刷新界面,这时候可能没法在下载的函数中回调。(通知)NSNotificationCenter是一个很好的选择。

通知使用起来灰常的简单:

1、定义通知:

[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(callback)
name: @"back"
object: nil];

2、定义通知中使用的方法:

- (void)callback{
NSLog(@"i am back.");
}

3、调用通知:

- (void)getIT{
NSLog(@"get it.");
//发出通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"back" object:self];
}

在调用通知的时候程序会在整个项目中寻找此通知的名称,找到后发出请求,因此通知的名称需要在整个项目中唯一。

objective-C NSNotificationCenter (通知)的使用方法相关推荐

  1. 通知中心 NSNotificationCenter 的简单使用方法

    NSNotificationCenter(通知中心)   [注意]需再dealloc中移除观察者   获取通知中心单例对象 NSNotificationCenter *center=[NSNotifi ...

  2. 错误请联系管理员文件 index.php,帝国CMS订单、反馈信息、投稿与留言发邮件通知管理员的方法...

    本文将为关注织梦者的朋友提供的是的帝国CMS订单.反馈信息.投稿与留言发邮件通知管理员的方法相关教程,具体实例代码请看下文: 本文实例讲述了帝国CMS订单.反馈信息.投稿与留言发邮件通知管理员的方法. ...

  3. 计算机软件著作权常见补正通知及应对方法

    计算机软件著作权常见补正通知及应对方法 归纳一下我遇见过的补正: 1.源程序最后一页未结尾,最后一页应是一个模块完整结束. 应对方法:将最后几页的程序更新一下再提交,尤其注意最后一段一定要是结束句. ...

  4. linux 关闭浏览器,在Linux和Windows下关闭谷歌Chrome浏览器中的通知提醒的方法

    本文教你使用浏览器内置的设置来关闭谷歌Chrome浏览器中的通知提醒,支持Linux和Windows等跨平台. 前言 谷歌的Chrome浏览器允许网站向用户推送通知/提醒,自然用户也可以阻止这些通知. ...

  5. 实现微信通知提醒的方法总结

    一.使用企业微信群机器人接口效果:微信群消息通知 优点:后台运行不受干扰性能稳定.群内多人同时接收通知.无需登录微信.支持微信图文消息 缺点:只适用于企业微信群.有发送频率限制 使用方法: 1.拉一个 ...

  6. win10系统托盘图标不见了_Win10任务栏托盘区域图标异常怎么办?任务栏通知区域重置方法...

    经常使用Win10系统的用户说,任务栏通知区域的图标异常已不是什么新鲜事.据分析,Win10任务栏通知区域异常是在两种情况下发生的:其一为声音.网络.电池等图标出现无法启用,而导致图标异常:其二是因为 ...

  7. IOS中通知中心(NSNotificationCenter)的使用总结

    IOS中通知中心NSNotificationCenter应用总结 一.了解几个相关的类 1.NSNotification 这个类可以理解为一个消息对象,其中有三个成员变量. 这个成员变量是这个消息对象 ...

  8. IOS之通知NSNotificationCenter的使用

    IOS之通知NSNotificationCenter的使用 KVO是IOS的重点,必须非常熟练 通知的写法很多,重点掌握NSNotificationCenter 在TabBarView 第一步 : 发 ...

  9. Windows 10任务栏中托盘区(通知区域)图标消失的解决方法

    该方法仅使用于部分情况.首先参考了win10系统托盘图标不见了_Win10任务栏托盘区域图标异常怎么办?任务栏通知区域重置方法...一文重置了通知区域TrayNotify的注册表,然而没有见效.通过尝 ...

  10. iOS开发系列--通知与消息机制

    http://www.cocoachina.com/ios/20150318/11364.html 概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣 ...

最新文章

  1. 美国-5大牛校--8条小牛--14好校--18很不错的大学
  2. C语言 | 链表概述
  3. Activity中四大启动模式
  4. win10 + VS2015 + EF6 + MySQL
  5. 7-1 defer调用
  6. 动态内存申请函数 malloc_malloc 的实现原理 内存池 mmap sbrk 链表
  7. 使用DirectShow.NET获取摄像头视频流
  8. GPS之家论坛最新地图下载精选 汇集论坛精华 不断更新中(2013.3.30)
  9. twaver API笔记
  10. 2019百度网盘破解不限速
  11. nacl溶解度_氯化钠溶解度
  12. GIMP 2.10.24 图片切片
  13. 变编程用户输入月份,判断这个月份是属于哪个季节?
  14. 计算机很多术语都是cat,18 个开源翻译工具帮助你的项目本地化
  15. 导教班,我的职业续航加油站
  16. python实现货币的转换_Python实现制度转换(货币,温度,长度)
  17. 没有大招的火山引擎,拿下70%大模型玩家
  18. 线程池原理初探以及源码分析(详解)
  19. Android-AQS
  20. MANIFEST.MF文件详解

热门文章

  1. django创建项目案例1详细介绍方法01
  2. 关于链表和指针变量的使用说明,可用于框架设计
  3. .net实现md5加密 sha1加密 sha256加密 sha384加密 sha512加密 des加密解密
  4. iOS开发-Protocol协议及委托代理(Delegate)传值
  5. windows8系统设置×××虚拟连接教程
  6. 离开页面前显示确认提示对话框(兼容IE,firefox) = how to Catch Win...
  7. Java中实现cd命令:运行中更改当前工作目录
  8. C之 #pragma(二十二)
  9. Visual studio 2010出现“error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏”解决方式...
  10. UIImage的scale