IOS KVO与NSNotificationCenter简单使用

每次面试都被问到KVO或者通知。今天也自己来看了看通知。

1、NSNotificationCenter使用。

使用步骤:添加观察者、发送通知、移除观察者。

添加观察者:哪里需要接收通知,就在哪里加。例如:

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(reciveNotfi:) name:@"testNot" object:nil];

发送通知:

[[NSNotificationCenter defaultCenter]postNotificationName:@"testNot" object:nil userInfo:@{@"value":dTF.text}];

接收数据在reciveNotfi处理。

-(void)reciveNotfi:(NSNotification *)sender{

NSDictionary *userInfo=sender.userInfo;

otherLabel.text=[userInfo objectForKey:@"value"];

}

移除观察者:

[[NSNotificationCenter defaultCenter]removeObserver:self name:@"testNot" object:nil];

注:name必须一致

参考链接:http://my.oschina.net/u/2340880/blog/406163

2 KVO

KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。

注:一定要是属性,私有变量是不可以的。属性赋值时不能用例如:_count=1;要用self.count=1;否则不生效。

使用步骤:添加观察者,数据处理,移除观察者

添加观察者:

[self addObserver:self forKeyPath:@"count" options:NSKeyValueObservingOptionNew context:nil];

注:被观察的对象的属性

数据处理:

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{

if ([keyPath isEqualToString:@"count"]) {

    //todo

}

}

移除观察者:

[self removeObserver:self forKeyPath:@"count"];

另外附上demo:https://github.com/LingZi123/KVOAndNSNotificationCenter.git

时间: 2024-11-06 21:40:41

IOS KVO与NSNotificationCenter简单使用的相关文章

iOS KVO和KVC简单使用

Account.h #import <Foundation/Foundation.h> @interface Account : NSObject @property (nonatomic,assign) float balance; @end Account.m #import "Account.h" @implementation Account @end Person.h #import <Foundation/Foundation.h> #import

细说KVO &amp; KVC &amp; NSNotificationCenter那些事

在iOS开发过程中,我们经常会听到或者用到KVO,KVC,NSNotificationCenter等,但是很多时候,我们可能没有那么了解,下面让我们来详细了解下他们的概念.用法以及他们之间的关系吧- 本篇博客共分以下几个模块来介绍: 什么是KVC? 什么是KVO? KVC与KVO的关系 KVC Collection Operators 什么是NSNotificationCenter? NSNotificationCenter与KVO的比较 NSNotificationCenter与Delegat

iOS KVO概述

iOS KVO概述 面试中经常会被问到:什么是KVO?这个问题既然出现概率这么大,那么我们就来详细讲一讲到底什么是KVO.下次再有面试官问你的时候,你就可以娓娓道来,以彰显高逼格 概述 问:什么是KVO? 答:KVO是Key-Value Observing的缩写.它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知.简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了. 如果你能这样回答,面试官一定不会说你错的,这就是KVO的原理.但是如果你能说出KVO

Socket在iOS客户端上的简单实现 - 利用GCAsyncSocket框架

GCAsyncSocket 这是一个2003的开发出来的一个开源框架 首先把GCDAsyncSocket的.h和.m文件拖入到工程中 试图控制器遵守GCDAsyncSocketDelegate协议 实例:在页面上有一个简单的textView和textField 在textField中输入文字后,点击发送即可把文字发送到服务器 ,服务器端返回的文字数据会显示到textView上 //  服务器主机ip地址#define kHost @"172.16.3.101"//  服务器主机通信端口

iOS开发网络篇—简单介绍ASI框架的使用

iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大. ASI的实现基于底层的CFNetwork框架,因此运行效率很高.可惜作者早已停止更新,有一些潜在的BUG无人去解决 ASI的github地址 https://github.com/pokeb/asi-http-request ASI的使用参考 http://www.cnblogs.com/dot

iOS开发UI篇—简单介绍静态单元格的使用

iOS开发UI篇-简单介绍静态单元格的使用 一.实现效果与说明 说明:观察上面的展示效果,可以发现整个界面是由一个tableview来展示的,上面的数据都是固定的,且几乎不会改变. 要完成上面的效果,有几种方法: (1)可以直接利用代码,返回三组,在判断每组有多少行,展示些什么数据,这样写"死"的代码建议绝不要使用. (2)稍微灵活一些的,可以把plist文件一懒加载的方式,加载到程序中,动态获取.但是观察界面结构,很容易看出这样需要进行模型嵌套,很麻烦. (3)storyboard提

文顶顶 iOS开发UI篇—简单的浏览器查看程序

文顶顶 iOS开发UI篇—简单的浏览器查看程序 iOS开发UI篇—简单的浏览器查看程序 一.程序实现要求 1.要求 2. 界面分析 (1) 需要读取或修改属性的控件需要设置属性 序号标签 图片 图片描述 左边按钮 右边按钮 (2) 需要监听响应事件的对象,需要添加监听方法 左边按钮 右边按钮 二.实现基本功能的程序 1 // 2 // YYViewController.m 3 // 03-图片浏览器初步 4 // 5 // Created by apple on 14-5-21. 6 // Co

iOS中动画的简单使用

//***简单动画 [UIView animateWithDuration:3 animations:^{ //      _animationView.center = CGPointMake(arc4random()%320, arc4random()%480);//改变中心点 //      _animationView.frame = CGRectMake(arc4random()%320, arc4random()%480,arc4random()%320, arc4random()%

Objective-C 观察者模式--KVO和NSNotificationCenter的使用

Objective-C中的KVO和NSNotificationCenter的原理是观察模式的很好实现, 下面用代码分别演示下用法 KVO的用法 1 - (void)viewDidLoad { 2 [super viewDidLoad]; 3 // Do any additional setup after loading the view, typically from a nib. 4 5 self.model = [Model new]; 6 7 //添加KVO 8 [self.model