NSNotificationCenter应用总结】的更多相关文章

通知中心的特点: 1:同步执行 2: 一对多发送消息 3: 降低程序耦合度 通知中心是单例,目的就是从任意一个发送消息到任意一个接收者,是同步执行的. 那么什么是同步呢? 用网上经典的说法,就是我叫朋友去吃饭,如果他没来,我就继续叫,等到他出来了我们才一起去吃,这就是同步:如果我叫朋友去吃饭,叫完无论他有没有来,我都先去吃饭, 这就是异步:在通知中心里就是每发送一次消息,要等消息被接收并完全执行完里面的方法,然后才返回来发送第二条消息,这就是同步,即通知中心发送消息是一条一条发送,而且是上条消息…
我们在开发中会遇到这样的情况:调用键盘时需要界面有一个调整,避免键盘遮掩输入框. 但实现时你会发现,在不同的手机上键盘的高度是不同的.这里列举一下: //获取键盘的高度 /* iphone 6: 中文 2014-12-31 11:16:23.643 Demo[686:41289] 键盘高度是 258 2014-12-31 11:16:23.644 Demo[686:41289] 键盘宽度是 375 英文 2014-12-31 11:55:21.417 Demo[1102:58972] 键盘高度是…
消息机制 NSNotificationCenter 一直都在频繁使用,但是却对其原理不是十分了解.今天就花些时间,把消息机制原理重头到尾好好过一遍. iOS 提供了一种 "同步的" 消息通知机制,观察者只要向消息中心注册, 即可接受其他对象发送来的消息,消息发送者和消息接受者两者可以互相一无所知,完全解耦. 这种消息通知机制可以应用于任意时间和任何对象,观察者可以有多个,所以消息具有广播的性质,只是需要注意的是,观察者向消息中心注册以后,在不需要接受消息时需要向消息中心注销,这种消息广…
NSNotificationCenter是 Cococa消息中心,统一管理单进程内不同线程的消息通迅. 添加观察者接收通知: //添加通知中心观察者 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(testMethod:) name:key object:self.person]; 参数说明: addObserver: 观察者,谁来接收通知;        selector: 收到通知后调用的方法…
NSNotificationCenter(通知中心)   [注意]需再dealloc中移除观察者   获取通知中心单例对象 NSNotificationCenter *center=[NSNotificationCenter defaultCenter];   常用方法:      1.注册观察者      - (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(id)anOb…
NSNotificationCenter存在的问题 通知没有统一的命名格式 对于通知的命名没有强制的要求,一个项目里可能有多种不同的命名规则.比如: 1 2 3 4 5 6 class Barista {     let notification = "coffeeMadeNotification" } class Trainee {     let coffeeMadeNotificationName = "Coffee Made" } 通知名称可能冲突 因为对于…
1.每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信: 2.任何一个对象都可以向通知中心发布通知(NSNotification), 描述自己在做什么.其他感兴趣的对象(Observer)可以申请在某个特定通知发布时(或在某个特定的对象发布通知时)收到这个通知. 3.通知是多对多的关系: 4.一个完整的通知一般包含3个属性: 1)- (NSString *)name;   //通知的名称 2)- (id)object;   //通知…
通常我们在 iOS 中发生什么事件时该做什么是由 Delegate 实现的,例如 View 加载完后会触发 viewDidLoad.  Apple 还为我们提供了另一种通知响应方式,那就是 NSNotification,系统中(UIKeyboardDidShowNotification 等) 以及某些第三方组件(例如 ASIHTTPRequest 的 kReachabilityChangedNotification 等). NSNotificationCenter 较之于 Delegate 可以…
一:首先查看一下关于NSNotificationCenter的定义 @interface NSNotificationCenter : NSObject { @package void * __strong _impl; void * __strong _callback; ]; } //单例获得消息中心对象 + (NSNotificationCenter *)defaultCenter; //增加消息监听 第一个参数是观察者为本身,第二个参数表示消息回调的方法,第三个消息通知的名字,第四个为n…
一.了解几个相关的类 1.NSNotification 这个类可以理解为一个消息对象,其中有三个成员变量. 这个成员变量是这个消息对象的唯一标识,用于辨别消息对象. @property (readonly, copy) NSString *name; 这个成员变量定义一个对象,可以理解为针对某一个对象的消息. @property (readonly, retain) id object; 这个成员变量是一个字典,可以用其来进行传值. @property (readonly, copy) NSDi…
NSNotificationCenter //下面是不同类中需要实现的代码 1.[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sender:) name:@"刘冠" object:nil];//通知接收者(监听者) -(void) sender:(NSNotification *)input { NSLog(@"%@",input.object) ; } //引用计…
开启ARC之后,NSNotificationCenter removeObserver 是否需要调用,在何时调用? 今天在stackoverflow上面看到一个问题,arc情况下是否需要调用removeObserver,自己想了想,的确是个问题,就研究了一下. 上代码: - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; } 本来想着在arc中dealloc方式是已经遗弃的了,但是事实是它还存…
如题,ios9上,  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(test) name:@"aaaa" object:nil];这种写法不会影响对象的释放,比如写在 controller 里, 即使不调用 remove notification,也不会影响controller的释放! ios7上是不行的,ios8忘记了...但是还是应该移除的…
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Notifications/Articles/Threading.html#//apple_ref/doc/uid/20001289-CEGJFDFG Delivering Notifications To Particular Threads Regular notification centers deliver notifications on th…
NSNotificationCenter主要用于广播消息到多个监听着,其传统用法 - (void)viewDidLoad { [super viewDidLoad]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(someMethod:) name:kMyNotificationIdentifier object:nil]; } - (void)dealloc { [[NSNotificatio…
在介绍内容的之前,先看一下实现结果. 通过细节可以发现,只有当手机号与密码都输入的情况登录按钮才会变亮.那么这是怎么实现的呢? 首先我们要知道,这种情况的发生的首要条件便是每时每刻都知道两个TextField的text.那么什么方法可以实现呢,有一个十分老笨的方法.那就是通过Nstimer,每秒都检查TextField的text内容.显然这种方法十分消耗内存,实际开发中是不可能采用的,但是对于新手来说,未必不是一种开发大脑的途径.闲话少说,下面介绍今天的主角NSNotificationCente…
通知中心NSNotificationCenter的使用 Cocoa框架中,通知中心以及KVO都属于设计模式中的观察者. Source 在使用通知中心之前,对通知中心类进行了简单的封装,以便可读性更强. NotificationCenter.h + NotificationCenter.m 通知中心发送消息的核心为,发送消息需要一唯一标示符flag来确认接受消息的对象.通知中心只是中介,它起着发送消息的作用. 我们来给一个model对象注册通知中心,在这个对象初始化的时候就注册,这个对象在销毁的时…
(1)post Notification类 [[NSNotificationCenter defaultCenter] postNotificationName:CRMPerformanceNewCellCurrentPageShouldChange object:@(performanceTabConfigure.tab)]; (2) Notification的观察者类 //.h文件 extern NSString *const CRMPerformanceNewCellCurrentPage…
- (void)viewDidLoad { [super viewDidLoad]; UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; btn.frame = CGRectMake(100, 100, 100, 50); btn.backgroundColor = [UIColor grayColor]; [btn setTitle:@"click me" forState:UIControlStateNorma…
// 监听加载更多的通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loadMoreDeals) name:@"loadMore" object:nil]; // 发出通知 [[NSNotificationCenter defaultCenter] postNotificationName:@"loadMore" object:nil];…
1. 定义一个方法 -(void) update{       } 2. 对象注册,并关连消息 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(update) name:@"update" object:nil] 3. 在要发出通知消息的地方 [[NSNotificationCenter defaultCenter] postNotificationName:@"update&…
转自:http://blog.csdn.net/liliangchw/article/details/8276803 对象之间进行通信最基本的方式就是消息传递,在Cocoa中提供Notification Center机制来完成这一任务.其主要作用就是负责在任意两个对象之间进行通信.使用方法很简单,如下几个步骤即可: 假设A与B之间进行通信,B来触发事件,A接受该事件,并作出响应.1) A编写自定义的消息响应函数update2) A向消息中心注册,[NSNotificationCenter def…
一.通知的使用方法 1.发出通知 例如:[[NSNotificationCenter defaultCenter]postNotificationName:@"backToFirstPage" object:@"123321"]; 通知的名字叫做backToFirstPage,而123321是一个参数,类型为ID类型,一般用于传值的 2.接受通知 例如:[[NSNotificationCenter defaultCenter]addObserver:self sel…
NSNotificationCenter是iOS中常用的消息通知机制,不过在使用过程中有几点需要注意的问题. 直接贴Apple 的官方文档吧: A notification center delivers notifications to observers synchronously. In other words, when posting a notification, control does not return to the poster until all observers ha…
概述 NSNotificationCenter通知中心,通常用于一对一或者一对多的消息传递,即当一个地方改变时,要求改变其他的一些地方,例如当网络请求回来了新的数据,需要刷新本地信息和本地内存里面的界面时,当这些页面不只一个时就可以考虑使用通知中心 注册一个通知 代码实现 NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; [notificationCenter addObserver:…
来源:JamesYu 链接:http://www.jianshu.com/p/a4d519e4e0d5 最近在做平板的过程中,发现了一些很不规范的代码.偶然修复支付bug的时候,看到其他项目代码,使用通知的地方没有移除,我以为我这个模块的支付闪退是因为他通知没有移除的缘故.而在debug和看了具体的代码的时候才发现和这里没有关系.在我印象中,曾经因为没有移除通知而遇到闪退的问题.所以让我很意外,于是写了个demo研究了下,同时来讲下NSNotificationCenter使用的正确姿势. NSN…
通知中心(NSNotificationCenter)实际是在程序内部提供了一种广播机制.把接收到的消息,根据内部的消息转发表,将消息转发给需要的对象.这句话其实已经很明显的告诉我们要如何使用通知了.第一步:在需要的地方注册要观察的通知,第二步:在某地方发送通知.(这里注意:发送的通知可能是我们自定义的,也可能是系统的). 一,使用通知 第1中创建通知方法 //注意,通知的使用是有先后顺序的 //一定要先监听通知,然后在发送通知 //第一种方法 // 添加一个通知 [[NSNotification…
转载自:http://www.mamicode.com/info-detail-1069228.html 标签: 1,通知(NSNotification)介绍 这里所说的通知不是指发给用户看的通知消息,而是系统内部进行消息传递的通知.要介绍通知之前,我们需要先了解什么是观察者模式.   观察者模式 (Observer):指一个对象在状态变化的时候会通知另一个对象.参与者并不需要知道其他对象的具体是干什么的 .这是一种降低耦合度的设计.常见的使用方法是观察者注册监听,然后在状态改变的时候,所有观察…
在Android中,为了解耦各个模块的耦合度,我们会使用很多方式,当然最简单而且效率最高的方式就是使用事件总线的方式进行消息分发,但是Android中并没有自带的消息分发机制,需要使用第三方库,比如EventBus.otto.或者自己实现,甚至最近开始流行使用RxJava去实现EventBus. 但是在IOS中,有自带的NSNotificationCenter可以使用.这里简单记录下NSNotificationCenter的使用方法. 1.添加观察者 NSNotificationCenter是一…
1.注册通知 [NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notify) name:@"myNotify" object:nil]; -(void)notify { NSLog(@"notify"); } 2.触发通知 [NSNotificationCenter defaultCenter] postNotificationName:@"myNotify&…