您的位置:首页 > 移动开发 > IOS开发

iOS海哥开发笔记 (海哥原创,iOS 通知NSNotificationCenter)

2016-02-23 12:28 309 查看
iOS的一种很好用的方法(不知道iOS底层是怎么实现的但是猜测是利用kvc原理实现的,类似于字典原理,再向底层的话,就看看做c函数类似的逻辑,先姑且不谈)。下面让我们看看通知如何使用,再什么情况下使用。

首先通知分成这么几个部分1、addObserver 2、postNotificationName 3、要是不使用的话,避免设备设备内部的线程以及内存浪费或避险内存泄漏的话,要remove观察者。

刚开始学习的同学,往往会错误的认为应该先postNotificationName(发出信息),然后接受addObserver(接受信息)。其实这种想法是错误的。对于iOS通知,我们必须先addObserver(建立起接收信息的接口,或者说是渠道吧)然后等待信息传送过来。现面给出代码截图。



首先在第一个类中构建一个通知的接收者是self(也就是本类),接收后,响应一个事件(dachengge:)事件,我们通过@"zxc"来确定观察者的名字(只有name相同才可以接通),dachengge:方法中的obj是等待一会穿过来的参数接口,等待通知的发出者发出数据,我们这边接收到后,打印数据。



点击UIButton跳转到二级界面,看看二级几面的内容,并且在一级页面会有什么发生。



二级界面是通过通知名字“zxc”,发送了一个NSString类型的字符串(下面的打印数据其实是在第一个界面打印的,通过逻辑分析,nslog是在第一个界面调用的,也可以之道)。这就是通知的大体流程。

让我们最后回顾一边通知的流程,1,先建立好接收这,准备接收。2,发出者发出数据,界面响应。

题外话:说今题为神么在这里聊聊这么简单的东西,今天项目里面加了一个东西,就是类似于

这个小球上的那个8(新消息提示),并且是即时性的,也就是说这个界面加载好了,假入有一条新的数据,这个小红点就要变为九。那么我们在项目中应如何操作。

有一个可以点击的按钮,可以请求网络,或者一下可以上拉或下拉的refresh操作请求网络,才可以使得小红点改变。但是在我的这个项目里,这么操作是不可以的,没有一个按钮是让你去获取网络的,一个界面,加载完,你就什么都不准操作,静静的等着数据的到来,然后把小红点加一,那我们应如何操作~我给出了两个方案。

方案1、

后台推送后,在推送的onMethend方法中截取后台的数据推送,记录这次推送,然后发出通知,在相应页面正在开启的时候接到通知,数据加1

方案2、

使用kvo(key-value- observing)。

今天就说这么多了,这两天赶项目,脚打后脑勺了,周五,周六就没有发日志,以后会补回来的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: