博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS KVO与NSNotificationCenter简单使用
阅读量:6203 次
发布时间:2019-06-21

本文共 1331 字,大约阅读时间需要 4 分钟。

每次面试都被问到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

转载于:https://www.cnblogs.com/luojiao-lx/p/4977187.html

你可能感兴趣的文章
MATLAB数据处理快速学习教程
查看>>
I00002 打印九九乘法表
查看>>
I00010 打印1到输入数之间的回文数
查看>>
HDU2106 decimal system
查看>>
用hexo在github上搭建自己的静态博客
查看>>
关系运算
查看>>
MFC对话框控件访问的七种方式
查看>>
synchronized(this)与synchronized(class)
查看>>
IE6兼容改造中的反思
查看>>
ABBYY FineReader 12没你想得那么简单
查看>>
实习日记7.12
查看>>
02scikit-learn模型训练
查看>>
5. 常用控件(一)
查看>>
Java内存区域与内存溢出异常
查看>>
实时流式计算框架Storm 0.9.0发布通知(中文版)
查看>>
devGridView第一列显示行号
查看>>
UISwitch的常见属性
查看>>
[虚树模板] 洛谷P2495 消耗战
查看>>
每天一个小算法(matlab armijo)
查看>>
Joomla 2.5 中文语言包安装模板报错
查看>>