iOS通知中心

iOS开发中的传送消息机制总的来说细分为三大类:

  • 本地通知
  • 推送通知
  • 通知中心

三者之间并没有什么直接性质的联系,通知中心是向应用程序中注册某个观察者的所有对象广播消息,通过通知中心可以很好的协调不同对象之间的消息通信。

注意:

每一个应用程序都有且只有一个通知中心(NSNotificationCenter)实例

代理和通知中心都是协调各个对象之间进行消息通信,通知中心在功能上与代理有些类似,二者在选择时有什么区分?

代理对应的关系的一对一的关系,而通知是一对多的关系,所以在遇到需要一处改变引起多出
变化的功能上我们最好选择通知。

例如 :

  1. QQ音乐App上换皮肤效果
  2. 读书软件改变字体大小效果

在实际开发中合理的使用二者,防止大材小用

一个通知成功实施的必有要三要素

  1. 通知发布者
  2. 通知中心
  3. 通知接收者

一个完整通知包含三个属性

  1. name:通知的名称
  2. object:通知的发布者
  3. userInfo:通知者给通知接收者的信息内容

通知接收者向通知中心注册通知方法

- (void)addObserver:(id)observer selector:(SEL)aSelector name:(nullable NSString *)aName object:(nullable id)anObject;  

observer:监听器,即谁要接收这个通知

aSelector:收到通知后,回调监听器的这个方法,并且把通知对象当做参数传入

 aName:通知的名称。如果为nil,那么无论通知的名称是什么,监听器都能收到这个通知 

anObject:通知发布者。如果为anObject和aName都为nil,监听器都收到所有的通知

通知中心发布通知的三种方法

• - (void)postNotification:(NSNotification *)notification;

• - (void)postNotificationName:(NSString *)aName object: (id)anObject;

• - (void)postNotificationName:(NSString *)aName object:(id)anObject
userInfo:(NSDictionary *)aUserInfo;

通知下的dealloc方法

我们在通知中心注册完后,通知中心是非常灵敏的,当条件被触发后就会不断的向注册者发送消息,但当我们的注册者已经被释放了,这时候就会造成野指针,引发程序崩溃,所以在我们对象被释放的时候,应该把该对象向通知中心注册的通知释放掉。

    - (void)dealloc
    {
        [[NSNotificationCenter defaultCenter] removeObserver:self];
     }

另外取消注册的方法有两个:

- (void)removeObserver:(id)observer;

- (void)removeObserver:(id)observer name:(nullable NSString *)aName object:(nullable id)anObject;
//第二个多了一个name的参数可以具体到该对象中某个通知

通知中心的常见的实际应用

1. 设备旋转

    UIDeviceOrientationDidChangeNotification

2. 键盘操作

UIKeyboardWillShowNotification // 键盘即将显示 

UIKeyboardDidShowNotification // 键盘显示完毕 

UIKeyboardWillHideNotification // 键盘即将隐藏 

UIKeyboardDidHideNotification // 键盘隐藏完毕 

UIKeyboardWillChangeFrameNotification // 键盘的位置尺寸即将发生改变 

UIKeyboardDidChangeFrameNotification // 键盘的位置尺寸改变完毕

提醒

通知的正常执行的顺序为:接收者在通知中心注册通知——>通知者在通知中心发布通知———>释放通知中心的注册通知。顺序出错将会产生错误。

时间: 2024-11-10 08:00:25

iOS通知中心的相关文章

WWDC 2014 Session笔记 - iOS 通知中心扩展制作入门

本文是我的 WWDC 2014 笔记 中的一篇,涉及的 Session 有 Creating Extensions for iOS and OS X, Part 1 Creating Extensions for iOS and OS X, Part 2 总览 扩展 (Extension) 是 iOS 8 和 OSX 10.10 加入的一个非常大的功能点,开发者可以通过系统提供给我们的扩展接入点 (Extension point) 来为系统特定的服务提供某些附加的功能.对于 iOS 来说,可以使

IOS中通知中心(NSNotificationCenter)的使用总结

IOS中通知中心NSNotificationCenter应用总结 一.了解几个相关的类 1.NSNotification 这个类可以理解为一个消息对象,其中有三个成员变量. 这个成员变量是这个消息对象的唯一标识,用于辨别消息对象. @property (readonly, copy) NSString *name; 这个成员变量定义一个对象,可以理解为针对某一个对象的消息. @property (readonly, retain) id object; 这个成员变量是一个字典,可以用其来进行传值

解析iOS系统的自带通知中心与勿扰模式功能

硅谷网讯 虽然目前智能手机在http://www.aliyun.com/zixun/aggregation/32533.html">我们的生活中扮演了非常重要的角色,无论是什么时候所有的提醒信息都能够第一时间通过智能手机接收, 但是有时过多的信息或者提醒反而会让我们的iPhone看起来有些乱七八糟,并且有时突然会在半夜发出提醒,影响我们的休息. 今天,就为大家介绍一下如果管理和使用我们手中的iPhone或iPad自带的通知中心及勿扰模式,还自己一个清静的世界. 通知中心 自带的通知中心和勿

苹果公司发布iOS 8 重新定义通知中心

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;6月3日消息,一年一度的苹果开发者大会于北京时间6月3日凌晨1点在美国旧金山开幕.苹果公司在会上发布了最新的移动设备操作系统iOS 8. 据介绍,在全新的iOS 8中,苹果重新定义了通知中心,可以在锁屏状态下对通知中心进行控制.比如,通过双击Home键就可以显示多任务操作,以及常用联系人.同时,iOS 8还加入了全新的互动通知中心,可以在锁屏界面实现快速回复短信. 此

改善系统的通知中心

改善系统的通知中心 iOS中的通知中心的实现实现机制是设计模式中的观察者. 在不进行任何修改的情况下,通知中心是这么使用的. // // NormalViewController.m // NotificationCenter // // Copyright (c) 2014年 Y.X. All rights reserved. // #import "NormalViewController.h" @interface NormalViewController () @end @im

Windows 9新视频曝光:通知中心类似Android

这一通知中心与Android.iOS和OS X的通知系统类似 新浪科技讯 北京时间9月15日早间消息,WinFuture周六发布至YouTube的一段视频显示,Windows 9将提供统一的通知中心功能.在这段视频中,当用户点击任务栏按钮时,一个新的统一通知中心出现在屏幕右下角.这一通知中心似乎支持Windows当前的"toast"通知,能帮助用户查看来自所有应用的最近通知消息.这一通知中心与Android.iOS和OS X的通知系统类似.所有的通知按照应用来分类,用户可以下拉以查看更

iOS7扁平化设计视频 通知中心融合widgets工具

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   iOS6的设计十分立体,偏向模仿实物化, 不过即将推出的iOS7将会首次一改这个风格,转为Jony Ive喜欢的 扁平化和2D简约设计.究竟一个月之后揭晓的iOS7会不会就是这个样子?       这个概念设计将"简约"风格完全套用在iOS上,由锁屏开始已大大改变.除了时钟还有天气,又有几个常用的功能和应用,全部以简单 线条和图形展示.主页屏

Windows Phone 9概念图 加入通知中心

不久前http://www.aliyun.com/zixun/aggregation/35971.html">微软官方终于放出了Windows Phone 8 GDR3升级,而Lumia 1520则成为了搭载该系统的首款机型.对于Windows Phone 8 GDR3来说,其最重要的升级点在于对四核以及1080p屏幕的支持,与此同时还加入了包括旋转屏幕在内的细节改进. 近日我们看到又有设计师放出了Windows Phone 9的概念图.从概念图中我们可以看到一些类似于Windows 8的

Cydia教程:iOS6通知中心变身iOS7半透明化

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   iOS 7 其中一个 新功能是控制中心 Control Center可以让用户快速设定. 不过如果你的 iOS设备已越狱并安装了 NCSettings, 也可以在通知中心加入快速设定.这次介绍的是 NCSettings 一个新主题,可以让 iOS6 界面变得像 iOS 7.       首先你要已安装 NCSettings 和 Winterboard, 然后再安