就是一个消息通知机制,类似广播。观察者只需要向消息中心注册感兴趣的东西,当有地方发出这个消息的时候,通知中心会发送给注册这个消息的对象。这样也起到了多个对象之间解耦的作用。苹果给我们封装了这个NSNotificationCenter,让我们可以很方便的进行通知的注册和移除。
通知的3个属性:
属性名字1、 说明
-(NSString *)name 通知的名称
- (id)object; 通知发布者
- (NSDictionary *)userInfo 通知的其他信息
NSNotification的初始化方法:
- (instancetype)initWithName:(NSString *)name object:(id)object userInfo:(NSDictionary *)userInfo;
+ (instancetype)notificationWithName:(NSString *)aName object:(id)anObject;
+ (instancetype)notificationWithName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo;
注意:官方文档有明确的说明,不可以使用init进行初始化
2、NSNotificationCenter
这个类是一个通知中心,使用单例设计,每个应用程序都会有一个默认的通知中心。用于调度通知的发送的接受。
添加一个观察者,可以为它指定一个方法,名字和对象。接受到通知时,执行方法。
- (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(id)anObject;
发送通知消息的方法
- (void)postNotification:(NSNotification *)notification;
- (void)postNotificationName:(NSString *)aName object:(id)anObject;
- (void)postNotificationName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo;
移除观察者的方法
- (void)removeObserver:(id)observer;
- (void)removeObserver:(id)observer name:(NSString *)aName object:(id)anObject;
几点注意:
1、如果发送的通知指定了object对象,那么观察者接收的通知设置的object对象与其一样,才会接收到通知,但是接收通知如果将这个参数设置为了nil,则会接收一切通知。
2、观察者的SEL函数指针可以有一个参数,参数就是发送的死奥西对象本身,可以通过这个参数取到消息对象的userInfo,实现传值。
二、通知的使用流程
首先,我们在需要接收通知的地方注册观察者,比如:
//获取通知中心单例对象 NSNotificationCenter * center = [NSNotificationCenter defaultCenter]; //添加当前类对象为一个观察者,name和object设置为nil,表示接收一切通知 [center addObserver:self selector:@selector(notice:) name:@"123" object:nil];
-(void)notice:(id)sender{ NSLog(@"%@",sender); }
我们可以在回调的函数中取到userInfo内容,如下:
相关推荐
在这个“iOS开发之通知NSNotificationDemo”中,开发者创建了一个简单的示例来演示如何使用NSNotification。 首先,我们要理解NSNotification的基本结构。NSNotification有两个核心部分:NSNotification对象和...
在iOS开发中,通知代理是实现对象间通信的重要机制,主要分为两个方面:NSNotificationCenter和Delegate。这两种方式都允许一个对象监听并响应其他对象的事件,但它们各自有其特性和适用场景。 首先,我们来详细...
iOS NSNotificationCenter 通知是 iOS 开发中常用的技术之一,主要用于实现对象之间的通信和交互。在本文中,我们将详细介绍 NSNotificationCenter 通知的简单使用,包括注册通知监听器、发送通知和注销通知监听器三...
在iOS开发中,NSNotification是Objective-C中的一个关键概念,它用于在对象之间进行解耦通信。这个`ios-对NSNotificationCenter的封装.zip`文件提供了一个针对NSNotification的封装,目的是简化使用过程,增强代码的...
在iOS开发中,通知代理是实现对象间通信的重要机制,主要分为`NSNotificationCenter`和`Delegate`两种方式。本文将深入探讨这两种技术,并提供一个`DelegateDemo`实例来帮助理解。 首先,我们来看`NSNotification`...
在iOS开发中,当涉及到多个页面间的通信,尤其是在不具有直接关系的视图控制器之间进行数据传递时,我们可以使用各种方法。在这个场景中,我们关注的是`NSNotificationCenter`,这是一个非常实用的消息中心,允许...
在iOS开发中,`UIApplication` 是一个至关重要的类,它代表了应用程序的主入口点,并提供了与系统交互的多种方法。本示例“ios demo,NSNotificationCenter,app进入后台时的调用和进入前台时的调用”是关于如何利用...
在iOS开发中,NSNotificationCenter经常与Delegate模式一起被用来解决类之间的通信问题。下面将详细讨论这两个概念以及它们的使用场景。 首先,NSNotification和Delegate的主要区别在于它们的消息传递方式和适用...
又如NSNotification和NSNotificationCenter,它们提供了发布/订阅模式的事件通知机制,使得不同对象之间可以进行异步通信。 此外,还有其他一些重要的头文件,如CoreData框架的CoreData.h,用于持久化数据管理;...
在iOS开发中,数据传递是应用之间或应用内部组件间通信的重要环节。...尽管属性赋值等方法在某些情况下更为直接,但通知模式提供了更大的灵活性,并且在系统层面支持了大量内建的功能,使其成为iOS开发中的重要技术。
在iOS开发中,通知机制(Notification)是一种非常重要的组件,用于在应用程序的不同组件之间传递信息。这个机制允许对象发送消息给其他对象,而无需知道接收者的具体身份,从而实现了松耦合的设计。本文将深入探讨...
在iOS开发中,NSNotificationCenter是Objective-C和Swift中用于对象间通信的重要机制。它提供了一种松耦合的方式,让对象可以在不直接引用彼此的情况下传递信息。本DEMO旨在通过实例来详细介绍如何使用...
在iOS开发中,Notification是一种常见的进程间通信方式,用于在应用程序的不同组件之间传递信息。在这个例子中,我们探讨的是如何利用Notification在两个页面(页面A和页面B)之间进行数据的传递,特别是在页面B中...
总之,`NSNotificationCenter`是iOS开发中不可或缺的一部分,它提供了一种灵活的方式来实现对象间的通信,但同时也需要谨慎使用,以避免不必要的复杂性和潜在的性能问题。正确地理解和运用这一工具,可以帮助我们...
在iOS开发中,代理(Delegate)、通知(Notification)和Block模式是三种常见的对象间通信机制。这三种方式各自有其特点和应用场景,开发者通常根据需求选择合适的方式进行数据传递和事件响应。 首先,代理模式是...
### 斯坦福大学iOS开发教程2011年秋Lecture 13:深入解析Core Data与文档 #### 核心知识点概览 在斯坦福大学2011年秋季的iOS开发课程中,第13讲主要聚焦于两个核心主题:Core Data和文档管理。这两个主题对于构建...
在iOS开发中,通知(Notification)和代理(Delegate)是两种常见的对象间通信方式,用于在应用程序的不同组件之间传递信息。这两种技术都是苹果的Objective-C和Swift编程语言中不可或缺的部分,帮助开发者实现灵活...
10. **通知和代理模式**: NSNotificationCenter和代理协议(如UITableViewDataSource和UITableViewDelegate)用于组件间的通信。 11. **测试和调试**: Xcode的单元测试和集成测试工具可能会被用来验证代码的功能和...
标题 "网络连接 与 NSNotificationCenter" 涉及到的是iOS开发中的两个核心概念:网络状态监测和应用程序的通知中心机制。这篇博文可能讨论了如何利用苹果的 Reachability 框架来检测设备的网络状态,并结合 ...