IOS NSNotificationCenter 的使用
在Android中,为了解耦各个模块的耦合度,我们会使用很多方式,当然最简单而且效率最高的方式就是使用事件总线的方式进行消息分发,但是Android中并没有自带的消息分发机制,需要使用第三方库,比如EventBus、otto、或者自己实现,甚至最近开始流行使用RxJava去实现EventBus。
但是在IOS中,有自带的NSNotificationCenter可以使用。这里简单记录下NSNotificationCenter的使用方法。
1、添加观察者 NSNotificationCenter是一种典型的观察者模式,我们第一步需要去添加观察者
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(action:) name:@"notifyName" object:nil ];
其中第一个参数为需要接收消息的类引用,第二个selector参数接收到消息后所调用的方法,此处会调用[self action:] name参数为消息的名称,是一个NSString类型,这个消息名称就是唯一区分消息的标志,object参数如果不填写nil,那该观察者就只会接受指定object发来的消息,而过滤其他object发来的消息为name的所有消息。
2、发送消息
[[NSNotificationCenter defaultCenter] postNotificationName:@"notifyName" object:self userInfo:userInfo];
在任何地方调用该方法后,会向第一步注册的观察者发送一个notifyName消息,object参数为发送者,也可不填,在此处并不关心,userInfo参数为该消息所带的参数,是一个NSDictionary类型。这个方法可能会有人刚开始的时候将object参数误认为是消息参数,其实并不是。
3、取消观察者
任何注册了观察的地方,在该观察者马上就要被释放前,或者coder认为该对象不应该继续接收该消息的时候,应该及时取消该观察者
[[NSNotificationCenter defaultCenter] removeObserver:self];
或
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"notifyName" object:nil];
IOS NSNotificationCenter 的使用的更多相关文章
- iOS NSNotificationCenter(消息机制)
转自:http://blog.csdn.net/liliangchw/article/details/8276803 对象之间进行通信最基本的方式就是消息传递,在Cocoa中提供Notificatio ...
- iOS NSNotificationCenter详解
通知中心的特点: 1:同步执行 2: 一对多发送消息 3: 降低程序耦合度 通知中心是单例,目的就是从任意一个发送消息到任意一个接收者,是同步执行的. 那么什么是同步呢? 用网上经典的说法,就是我叫朋 ...
- ios NSNotificationCenter 收到通知后的执行线程
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Notifications/Articles/Thread ...
- IOS NSNotificationCenter 通知的使用
1.注册通知 [NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notify) name:@" ...
- iOS NSNotificationCenter 移除通知带来的crash
Where to remove observer for NSNotification? 在dealloc方法中移除通知观察者带来crash NSNotificationCenter中的通知消息已经发 ...
- iOS NSNotificationCenter 最基本使用
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:] , @"a ...
- IOS NSNotificationCenter(通知 的使用)监听文本框的文字改变
监听文本框的文字改变 * 一个文本输入框的文字发生改变时,文本输入框会发出一个UITextFieldTextDidChangeNotification通知 * 因此通过监听通知来监听文本输入框的文字改 ...
- iOS NSNotificationCenter 使用姿势详解
最近在做平板的过程中,发现了一些很不规范的代码.偶然修复支付bug的时候,看到其他项目代码,使用通知的地方没有移除,我以为我这个模块的支付闪退是因为他通知没有移除的缘故.而在debug和看了具体的代码 ...
- 新浪微博客户端(36)-自定义带placeholder的TextView
iOS 上自带的UITextView竟然不能设置placeholder,但是UITextView却可以,我也真是醉了.没办法了,自己写一个 DJTextView.h #import <UIKit ...
随机推荐
- javascrpt随笔
function member(name, gender) { this.name = name; this.gender = gender; this.display = display; //指定 ...
- maven中解决javax.servlet.jsp.PageContext cannot be resolved to a type
在eclipse环境下用maven出现:javax.servlet.jsp.PageContext cannot be resolved to a type. 这是由于没有引入jsp-api引发的问题 ...
- jQuery Mobile与QUI框架的异曲同工之处
最近一直在研究jQuery Mobile框架,这是jQuery的官方移动版UI框架,专门用来开发手机与平板电脑方面的应用.结果越来越觉得它和我的QUI框架的开发思路非常相似,很多地方都有异曲同工之妙. ...
- hihocoder #1177 : 顺子 模拟
#1177 : 顺子 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://hihocoder.com/problemset/problem/1177 ...
- TP复习7
//编写search方法,实现搜索 public function search(){ //获取post的数据,根据数据组装查询的条件,根据条件从数据库中获取数据,返回给页面中遍历 if(isset( ...
- [Node.js] CommonJS Modules
CoomonJS modules provide a clean syntax for importing dependencies. This lesson will take a look at ...
- OpenRisc-67-OR的汇编
引言 之前我们写过OR的裸机程序,写过基于OR的linux设备驱动程序,也反汇编过OR的机器码. 本小节,我们将通过一个简单的实验,对OR的汇编(指令集)做一个简单的梳理和測试. 1,基本思想 要想了 ...
- Android开发数据存储之ContentProvider详解
转载:十二.ContentProvider和Uri详解 一.使用ContentProvider(内容提供者)共享数据 ContentProvider在android中的作用是对外共享数据,也就是说你可 ...
- 关于QStringRef
QString 为字符串操作提供了各种成员比如mid().left().right().它们都创建会一个新的字符串,因此有一个对在已存在QString的malloc和深拷贝. 与此相反,QStri ...
- Linux内核文档翻译之Squashfs文件系统
转载:http://blog.csdn.net/gqb_driver/article/details/12946629 对于使用openwrt的嵌入式系统来说,因为硬件绝大多数采用Flash,因此一般 ...