QF——iOS通知中心(NotificationCener)
前面我们讲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)的更多相关文章
- iOS通知中心
iOS通知中心 它是iOS程序内部的一种消息广播机制,通过它,可以实现无引用关系的对象之间的通信.通知中心他是基于观察者模式,它只能进行程序内部通信,不能跨应用程序进程通信. 当通知中心接受到消息后会 ...
- iOS通知中心升级 -可设置按优先级执行block
简单介绍下,这是需求驱动中发现iOS的NotificationCenter有很多功能无法实现,于是对其进行了一层包装.相当于手动管理观察者栈和监听者期望执行的事件,因此可以为其添加了很多新增的功能,将 ...
- iOS 通知中心 NSNotificationCenter
iOS开发中,每个app都有一个通知中心,通知中心可以发送和接收通知. 在使用通知中心 NSNotificationCenter之前,先了解一下通知 NSNotification. NSNotific ...
- iOS 通知中心扩展制作初步-b
涉及的 Session 有 Creating Extensions for iOS and OS X, Part 1 Creating Extensions for iOS and OS X, Par ...
- iOS监听模式系列之通知中心
补充--通知中心 对于很多初学者往往会把iOS中的本地通知.推送通知和iOS通知中心的概念弄混.其实二者之间并没有任何关系,事实上它们都不属于一个框架,前者属于UIKit框架,后者属于Foundati ...
- iOS开发之通知中心(NSNotificationCenter)
前言 面向对象的设计思想是把行为方法封装到每一个对象中,以用来增加代码的复用性.正是这种分散封装,增加了对象之间的相互关联,总是有很多的对象需要彼此了解以及相互操作! 一个简单示例说明这种交互产生的对 ...
- IOS回调机制——代理,通知中心以及Block
Xcode5.0正式版 IOS7和Xcode5正式版在昨天正式可以下载.IOS7不多说了,交互设计,界面风格,操作的简化程度都属于比较领先的水平. 这里来说说Xcode5正式版,和以前的Xcode5测 ...
- IOS Notification 通知中心
1. 通知中心概述 通知中心实际上是在程序内部提供了消息广播的一种机制.通知中心不能在进程间进行通信.实际上就是一个二传手,把接收到的消息,根据内部的一个消息转发表,来将消息转发给需要的对象. ...
- iOS生命周期 & 通知中心
笔记内容 学习笔记-段玉磊 Stanford course View Controller Lifecycle 这篇文是我记载Developing iOS 7 Apps公开课 第5课的笔记 UITex ...
随机推荐
- cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第七步---英雄要升级&属性--解析csv配置文件
/* 说明: **1.本次游戏实例是<cocos2d-x游戏开发之旅>上的最后一个游戏,这里用3.0重写并做下笔记 **2.我也问过木头本人啦.他说:随便写,第一别全然照搬代码:第二能够说 ...
- Linux下命令行显示当前全路径方法
/etc/profile 和 ~/.bashrc 或者直接在用户的.bash_profile中添加 export PS1='[\u@\h \W]\$' 然后执行source命令
- C# Web对文件的管理
/// <summary> /// 创建新文件 /// </summary> /// <param name="parentPath">文件路径 ...
- C语言预处理指令
C程序的源代码中可包括各种编译指令,这些指令称为预处理命令.虽然它们实际上不是C语言的一部分,但却扩展了C程序设计的环境.本节将介绍如何应用预处理程序和注释简化程序开发过程,并提高程序的可读性.ANS ...
- C语言_double_精度的谜团
double-long long 和0的比较,double和double之间比较
- 库函数strlen源码重现及注意问题
首先直接上源码: size_t strlen (const char * str) { const char *eos = str; while(*eos++); return(eos - str - ...
- 35个jQuery小技巧!
1. 禁止右键点击$(document).ready(function(){ $(document).bind("contextmenu",function(e){ ...
- ACID:数据库事务正确执行的四个基本要素
ACID,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability).一个支持事务(T ...
- Linux学习--alias命令
alias用于设置命令的别名,具体相应命令如下: 1.alias显示当前设置的别名 2.设置命令别名: alias 命令名=‘别名命令’ 3.显示指定的别名设置:alias name 4.取消相应 ...
- [Django 1.5] Windows + Apache + wsgi配置
基本步骤 下载安装Apache http://httpd.apache.org/download.cgi. 下载安装modwsgi 模块http://code.google.com/p/modwsgi ...