前面我们讲iOS不同界面间传值的时候,说过可以通过通知中心进行传值。那到底什么是通知中心,他是如何实现传值的呢?

  NSNotificationCenter是单例的,只提供了一个唯一的实例化入口,在整个应用内只存在一个实例 :

    [NSNotificationCenter defaultCenter]

  只要“关注”NSNotificationCenter的实例,就可以自动接收其他对象通过通知中心发的消息。因为它的关注者可以有很多个,所以它也就有了广播性质。

  在通知中心里,消息发送者和接收者一无所知,完全解耦,这是极好的。

  通知中心的本质是观察者模式,给某对象(NSNotificationCenter)注册观察,只要它发生了变化,就会触发回调方法。

使用通知中心的步骤:假设要从A传值到B

  1.B先关注通知中心,也可以说给通知中心注册观察者B:

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(urlChange:) name:@"newURL" object:nil];

  2.A通过通知中心发送消息:

      [[NSNotificationCenter defaultCenter] postNotificationName:@"newURL" object:nil userInfo:@{@"newSiteURL":value}];

    3.因为B关注了通知中心,当通知中心有消息时,会触发回调方法,所以执行 - (void)urlChange:(NSNotification *)notification

    注:NSNotification 是消息信息的携带体,通过notification.userInfo可以获得通知中心里的通知信息。

    4.移除观察者:

     重写析构函数dealloc,在里面移除观察者(对通知中心取消关注)

     [[NSNotificationCenter defaultCenter] removeObserver:self];

    

QF——iOS通知中心(NotificationCener)的更多相关文章

  1. iOS通知中心

    iOS通知中心 它是iOS程序内部的一种消息广播机制,通过它,可以实现无引用关系的对象之间的通信.通知中心他是基于观察者模式,它只能进行程序内部通信,不能跨应用程序进程通信. 当通知中心接受到消息后会 ...

  2. iOS通知中心升级 -可设置按优先级执行block

    简单介绍下,这是需求驱动中发现iOS的NotificationCenter有很多功能无法实现,于是对其进行了一层包装.相当于手动管理观察者栈和监听者期望执行的事件,因此可以为其添加了很多新增的功能,将 ...

  3. iOS 通知中心 NSNotificationCenter

    iOS开发中,每个app都有一个通知中心,通知中心可以发送和接收通知. 在使用通知中心 NSNotificationCenter之前,先了解一下通知 NSNotification. NSNotific ...

  4. iOS 通知中心扩展制作初步-b

    涉及的 Session 有 Creating Extensions for iOS and OS X, Part 1 Creating Extensions for iOS and OS X, Par ...

  5. iOS监听模式系列之通知中心

    补充--通知中心 对于很多初学者往往会把iOS中的本地通知.推送通知和iOS通知中心的概念弄混.其实二者之间并没有任何关系,事实上它们都不属于一个框架,前者属于UIKit框架,后者属于Foundati ...

  6. iOS开发之通知中心(NSNotificationCenter)

    前言 面向对象的设计思想是把行为方法封装到每一个对象中,以用来增加代码的复用性.正是这种分散封装,增加了对象之间的相互关联,总是有很多的对象需要彼此了解以及相互操作! 一个简单示例说明这种交互产生的对 ...

  7. IOS回调机制——代理,通知中心以及Block

    Xcode5.0正式版 IOS7和Xcode5正式版在昨天正式可以下载.IOS7不多说了,交互设计,界面风格,操作的简化程度都属于比较领先的水平. 这里来说说Xcode5正式版,和以前的Xcode5测 ...

  8. IOS Notification 通知中心

    1.     通知中心概述 通知中心实际上是在程序内部提供了消息广播的一种机制.通知中心不能在进程间进行通信.实际上就是一个二传手,把接收到的消息,根据内部的一个消息转发表,来将消息转发给需要的对象. ...

  9. iOS生命周期 & 通知中心

    笔记内容 学习笔记-段玉磊 Stanford course View Controller Lifecycle 这篇文是我记载Developing iOS 7 Apps公开课 第5课的笔记 UITex ...

随机推荐

  1. javascript之函数节流

    对于高频率的事件触发,为了优化页面性能,我们一般会对其做函数节流.比如: resize.keydow.scroll事件等.用户的频繁操作,会导致事件高频率的执行,这样会出现页面抖动啊.频繁调接口啊等问 ...

  2. think in python 11 字典

    字典 字典类似于列表,但更加通用 键值对 ,字典是 键与值之间的映射,每个键都映射到一个值上 dict可以创建一个不包含任何项的字典 eng2sp = dict() print eng2sp 还可以给 ...

  3. sticker.js贴纸效果

    http://stickerjs.cmiscm.com/ <div class="sticker gbtags"></div> <!-- 引用Java ...

  4. L10 数据入站、转发、出站流程

    二 写出防火墙规则链之间的顺序也就是入站数据流向.转发数据流向.出站数据流向的过程 入站:PREROUTING→INPUT 数据包到达防火墙,由prerouting处理,判断是否修改地址 路由选择:判 ...

  5. ARC、MRC混编

    Xcode5之后,新建iOS工程,默认都是ARC模式,但是有时候我们的项目中需要用到一些第三方框架,我们下载下来却发现是非ARC的,这时候我们需要进行ARC和MRC混编. 第一种方式: Edit-&g ...

  6. JNI加载Native Library 以及 跨线程和Qt通信

    Part1 Java Native Interface-JNI-JAVA本地调用 JNI标准是Java平台的一部分, 允许Java代码和其他语言进行交互; 开始实现-> Step 1) 编写Ja ...

  7. linux 中ls命令函数

    #include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<dirent.h> ...

  8. Toolkit Pro学习--Toolbar的创建

    一.新建Toolkit Pro应用程序 安装好Toolkit Pro后,打开VS2008,新建-项目-Toolkit Pro Application.如图1所示. 图1:Toolkit Pro创建窗口 ...

  9. Molecule to atoms

    For a given chemical formula represented by a string, count the number of atoms of each element cont ...

  10. Web QQ自动强制加好友代码

    也许见过强行聊天的代码:  tencent://Message/?Uin=574201314&websiteName=www.oicqzone.com&Menu=yes 但是你应该不知 ...