`

NSNotificationCenter基础知识

    博客分类:
  • ios
 
阅读更多

Notification的工作机制

1.对应用程序中其他地方发生的事件(比如增加一条数据库记录)感兴趣的对象,会向通告中心(Notification Center,NSNotificationCenter类的实例)注册,从而成为该事件的监听者。在注册过程中,监听者需要指定方法供通告中心在事件发生时调用。

2.给数据库添加记录(或者类似事件)的对象给通告中心发一个通告(NSnotification的实例)。该通告对象包括识别通告的标志、发布通告的对象ID和可选的附加信息字典。

3.通告中心发送消息到每个已注册的监听者,调用监听者指定的方法会将通告传给这些监听者。

 

NSNotification对象

NSNotification包含三个属性:

name一个notification对象的name,由我们自己定义

objectpost该notification的object,也就是sender

userInfo伴随notification传递过去的数据,是一个NSDictionary

 

NSNotificationCenter中的方法

Getting the Notification Center

+ defaultCenter该方法用于获取当前程序中的center object

Managing Notification Observers

– addObserverForName:object:queue:usingBlock:

对快代码的操作,详见:http://blog.sina.com.cn/s/blog_63ced45101016cih.html

– addObserver:selector:name:object:

notificationObserver 一个对象,作为observer,不能为空。

notificationSelectorobserver接收到notificaiton后会调用的方法,该方法只能有一个参数,类似:- (void) mytest:(NSNotification*) notification

notificationNamenotification的name,center只会像该observer发送指定name的notification

notificationSender一个对象,作为sender,也就是说指定了只有改sender发送了name为上一个参数指定的notification,center才会向observer发送notification

– removeObserver:

notificationObserver 从center中删除observer,add方法调用后,要在合适的地方调用remove方法删除observer,否则如果多系调用add后,一个post会接收到多次notification

– removeObserver:name:object:

该方法与–addObserver:selector:name:object:结合起来使用

Posting Notifications

– postNotification:

    NSNotification

– postNotificationName:object:

notificationNamenotification name

notificationSender发送notification的object

– postNotificationName:object:userInfo:

notificationNamenotification name

notificationSender发送notification的object

userInfo伴随着notification发送过去的数据,是一个NSDictionary

 

 

Android中的四大组件之一Broadcast用来在手机上发送广播,无论是同一个程序中或是在其他的应用中,只要你注册接收该条广播,那么当广播发送之后,你就会收到,这种机制可以降低程序中间的耦合性,可以通过发送广播调用其他类中的东西。

 

在IOS中也有类似Broadcast的机制,其中包括NSNotificationCenter和NSDistributedNotificationCenter机制。

NSNotificationCenter。在IOS运行的每一个程序都有一个default center,不要自己创建。通过方法[NSNotificationCenter defaultCenter]可以获取center对象,center实际上是notification的dispatch table(调度表),center控制着程序中所有notification的添加、删除以及post后的响应。可以说NSNotificationCenter 是专门供一个程序中的不同类间的消息通信而设置的。

NSDistributedNotificationCenter用于在不同程序之间post和receive notification,这个跟Android的Broadcast比较相似。

分享到:
评论

相关推荐

    iOS基础——通知代理之NSNotificationCenter、Delegate

    总之,iOS的基础知识中,了解和掌握NSNotification与Delegate这两种通信方式至关重要。正确地使用它们,能够帮助开发者构建出高效、灵活的代码结构,提升用户体验。在实践中不断探索和优化,你将能够更好地应对各种...

    IPhone开发进阶

    【IPhone开发进阶】是针对iOS开发领域的一门进阶教程,主要涵盖了iPhone应用程序开发的核心技术和基础知识。本文将深入探讨iPhone OS、SDK以及Objective-C 2.0的关键概念。 首先,iPhone OS是构建iPhone应用程序的...

    ios-iOS 纯代码基础框架 包括各种分类干货.zip

    这个BasisProduct项目不仅包含了以上这些基础知识点,还可能涵盖了一些特定的分类干货,如UI设计原则、App启动优化、国际化与本地化、单元测试等内容。通过深入学习和实践,开发者可以提升自己的iOS开发技能,为构建...

    Object-c for iphone

    总的来说,"Object-c for iPhone" 主要涵盖的内容是使用 Objective-C 这种编程语言进行 iPhone 应用程序的开发,涉及到类、对象、消息传递等基础知识,以及如何利用 Objective-C 的特性结合苹果的开发框架(如 UIKit...

    iOS 5 Programming Cookbook.pdf

    - **知识点**:使用Xcode创建iOS项目的基础流程。 - **实现方法**:通过Xcode的模板来快速搭建一个基本的应用程序框架,包括设置项目的名称、组织标识符等基本信息。 - **应用场景**:适用于初学者入门iOS开发,...

    iOS.5.Programming.Cookbook

    - 学习条件语句的基础知识,如何使用if语句进行逻辑判断。 - 掌握如何结合布尔表达式来构造复杂的条件判断逻辑。 - **1.9 Implementing Loops with For Statements**(使用for语句实现循环) - 学习如何使用for...

    objective-c教程

    在Objective-C中,数据类型、书写规范和格式符都是基础知识。学习者需要掌握不同数据类型(如基本数据类型、指针类型等)以及如何在代码中正确使用它们。书写规范涉及代码的排版和风格,有助于维护和理解代码。格式...

    ios自用小知识文档

    了解ARC(Automatic Reference Counting)的工作原理,知道如何避免 retain cycles 是防止内存泄漏的基础。学会使用`weakSelf`和`strongSelf`来解决Block中的循环引用问题。 2. **KVC与KVO**:Key-Value Coding...

    IOS应用源码Demo-一个和微博或qq空间的状态发布窗口差不多的输入界面-毕设学习.zip

    这个源码Demo是一个很好的实践平台,可以帮助开发者巩固iOS开发基础知识,理解实际项目中的常见问题和解决方案。通过深入研究和实践,你不仅可以提升iOS编程技能,也能为毕业设计或论文提供有价值的参考。

    iphone面试题秘籍 apple开发必备

    #### 一、Objective-C 内存管理基础知识 1. **alloc与dealloc的区别以及与retain、release的关系** - **alloc**: 创建一个新的对象并分配内存空间。 - **dealloc**: 释放一个对象占用的内存空间。 - **retain**...

    IPHONE主要类与协议的声明文件

    以上就是iPhone开发中一些主要的类和协议,通过深入理解和熟练运用这些基础知识,开发者可以构建出高效、稳定、具有良好用户体验的应用程序。这份声明文件集合无疑是对iOS开发者非常有价值的参考资料。

    Cocoa Programming Developer's Handbook

    ### Cocoa Programming Developer's Handbook 关键知识点解析 #### 一、Cocoa 概述 - **定义**:Cocoa 是苹果...无论是对于初学者还是有经验的开发者来说,掌握 Cocoa 的基础知识和技术都是构建高效稳定应用的基础。

    swift-SplittableViewKit-当设备旋转时UITableView中的IndexPath单元格将自动移动到左视图

    不过,为了充分利用这个库,开发者需要对Swift的基础知识有深入理解,包括但不限于:面向协议编程、UI布局、数据源和代理模式等。同时,对于可能遇到的问题,如性能优化、内存管理等,也需要有一定的处理能力。 ...

    iOS 5 Programming Cookbook

    ### iOS 5 Programming Cookbook 关键知识点解析 #### 标题:iOS 5 Programming ...本书覆盖了从基础知识到高级主题的广泛内容,对于想要学习iOS开发的新手和有一定经验的开发者来说都是非常有价值的参考资料。

    OC常用的导航栏和基础类

    8. **NSNotification/NSNotificationCenter**:实现不同对象间的通信,当某个事件发生时,可以通知其他对象。 9. ** gcd (Grand Central Dispatch)**:Apple提供的多线程解决方案,用于异步处理任务,提高性能。 ...

    Objective-C培训资料

    ### Objective-C培训资料知识点概述 #### 一、Objective-C简介 Objective-C是一种通用、面向对象...通过对以上知识点的学习,开发者可以更加熟练地掌握Objective-C的使用方法,为iOS和macOS应用开发打下坚实的基础。

Global site tag (gtag.js) - Google Analytics