前面我们讲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. cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第七步---英雄要升级&属性--解析csv配置文件

    /* 说明: **1.本次游戏实例是<cocos2d-x游戏开发之旅>上的最后一个游戏,这里用3.0重写并做下笔记 **2.我也问过木头本人啦.他说:随便写,第一别全然照搬代码:第二能够说 ...

  2. Linux下命令行显示当前全路径方法

    /etc/profile 和 ~/.bashrc 或者直接在用户的.bash_profile中添加 export PS1='[\u@\h \W]\$' 然后执行source命令

  3. C# Web对文件的管理

    /// <summary> /// 创建新文件 /// </summary> /// <param name="parentPath">文件路径 ...

  4. C语言预处理指令

    C程序的源代码中可包括各种编译指令,这些指令称为预处理命令.虽然它们实际上不是C语言的一部分,但却扩展了C程序设计的环境.本节将介绍如何应用预处理程序和注释简化程序开发过程,并提高程序的可读性.ANS ...

  5. C语言_double_精度的谜团

    double-long long 和0的比较,double和double之间比较

  6. 库函数strlen源码重现及注意问题

    首先直接上源码: size_t strlen (const char * str) { const char *eos = str; while(*eos++); return(eos - str - ...

  7. 35个jQuery小技巧!

    1. 禁止右键点击$(document).ready(function(){    $(document).bind("contextmenu",function(e){     ...

  8. ACID:数据库事务正确执行的四个基本要素

    ACID,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability).一个支持事务(T ...

  9. Linux学习--alias命令

    alias用于设置命令的别名,具体相应命令如下: 1.alias显示当前设置的别名 2.设置命令别名:  alias  命令名=‘别名命令’ 3.显示指定的别名设置:alias name 4.取消相应 ...

  10. [Django 1.5] Windows + Apache + wsgi配置

    基本步骤 下载安装Apache http://httpd.apache.org/download.cgi. 下载安装modwsgi 模块http://code.google.com/p/modwsgi ...