通知是iOS的一种信息传递的设计模式,和delegate 一样,可以传递信息。从来源说:应该分为3中,local remote 、custom。也就是本地通知、远程通知、和自定义通知。这是个人理解,可能和专业术语不一致。
本地通知,也就是我们自己显示通知的UI样式,还能自己修改。本地的闹钟提醒可以算一种最常用的例子。
远程通知,就是通过第三方或者apple的服务器,发出的通知。
自定义通知,就是我们开发者自己注册,并自己发送的通知。NSNotificationcer 类,处理这些。
本文不讲这些notifications 是怎么使用的,
通知中心的种类有两种,NSNotificationCenter 类,管理一个单一的进程的通知。就是在一个app内部管理通知事务的。NSDistributedNotificatiioncenter,对同一个机器上不同app之间的通信OSX上使用。
NSNotificationCenter 。可以异步方式发送通知,使用notifictionqune 通知队列。多线程应用中,通知总是在发布通知的线程中传递,这可能与注册的观察者的线程不同。
NSNotificationQueue 可以声明一个通知队列,可以异步的发送通知。
NSNotificationQueue *notificationQueue = [NSNotificationQueue defaultQueue];//默认的通知队列,当然可以再创造一个。
NSNotification *notification = [[NSNotification alloc] initWithName:@"Eezy" object:self userInfo:@{@"Status": @"Success"}];
NSNotificationQueue *notificationQueue = [NSNotificationQueue defaultQueue];
NSLog(@"%@",notificationQueue);
[notificationQueue enqueueNotification:notification postingStyle:NSPostASAP];//生成一个通知队列,并强调了发送方式NSPostASAP。
[notificationQueue enqueueNotification:notification postingStyle:NSPostASAP coalesceMask:NSNotificationNoCoalescing forModes:@[NSRunLoopCommonModes]];//合并发送通知
//从队列中移除符合匹配条件的通知。
[notificationQueue dequeueNotificationsMatching:notification coalesceMask:NSNotificationNoCoalescing];
网友评论