通知中心的特点: 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…