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)。
今天就说这么多了,这两天赶项目,脚打后脑勺了,周五,周六就没有发日志,以后会补回来的。
首先通知分成这么几个部分1、addObserver 2、postNotificationName 3、要是不使用的话,避免设备设备内部的线程以及内存浪费或避险内存泄漏的话,要remove观察者。
刚开始学习的同学,往往会错误的认为应该先postNotificationName(发出信息),然后接受addObserver(接受信息)。其实这种想法是错误的。对于iOS通知,我们必须先addObserver(建立起接收信息的接口,或者说是渠道吧)然后等待信息传送过来。现面给出代码截图。
![图片](https://i-blog.csdnimg.cn/blog_migrate/31e3c91fe770c4549e86a5f8856ba912.png)
首先在第一个类中构建一个通知的接收者是self(也就是本类),接收后,响应一个事件(dachengge:)事件,我们通过@"zxc"来确定观察者的名字(只有name相同才可以接通),dachengge:方法中的obj是等待一会穿过来的参数接口,等待通知的发出者发出数据,我们这边接收到后,打印数据。
![图片](https://i-blog.csdnimg.cn/blog_migrate/c9d0d1cd03dffff6ad6d5efa01e265f7.png)
点击UIButton跳转到二级界面,看看二级几面的内容,并且在一级页面会有什么发生。
![图片](https://i-blog.csdnimg.cn/blog_migrate/011d8bbba36e8f9cdf33af316b60d040.png)
二级界面是通过通知名字“zxc”,发送了一个NSString类型的字符串(下面的打印数据其实是在第一个界面打印的,通过逻辑分析,nslog是在第一个界面调用的,也可以之道)。这就是通知的大体流程。
让我们最后回顾一边通知的流程,1,先建立好接收这,准备接收。2,发出者发出数据,界面响应。
题外话:说今题为神么在这里聊聊这么简单的东西,今天项目里面加了一个东西,就是类似于
![图片](https://i-blog.csdnimg.cn/blog_migrate/bd9c8f32acf837ce0c99102a2451f6bf.png)
有一个可以点击的按钮,可以请求网络,或者一下可以上拉或下拉的refresh操作请求网络,才可以使得小红点改变。但是在我的这个项目里,这么操作是不可以的,没有一个按钮是让你去获取网络的,一个界面,加载完,你就什么都不准操作,静静的等着数据的到来,然后把小红点加一,那我们应如何操作~我给出了两个方案。
方案1、
后台推送后,在推送的onMethend方法中截取后台的数据推送,记录这次推送,然后发出通知,在相应页面正在开启的时候接到通知,数据加1
方案2、
使用kvo(key-value- observing)。
今天就说这么多了,这两天赶项目,脚打后脑勺了,周五,周六就没有发日志,以后会补回来的。