iOS kvo 结合 FBKVOController 的使用
来源:互联网 发布:中华大字典软件 编辑:程序博客网 时间:2024/05/18 02:04
转自:http://www.cnblogs.com/cocoajin/p/3600634.html
iOS kvo 结合 FBKVOController 的使用
一:FBKVOControlloer是FaceBook开源的一个 在 iOS,maxOS上使用 kvo的 开源库;
提供了block和@selector(SEL) 的回调操作,很方便实用;
https://github.com/facebook/KVOController
二:示例:
1
2
3
4
5
6
7
8
9
10
11
fbKVO = [FBKVOController controllerWithObserver:
self
];
[fbKVO observe:personOne keyPath:@
"pName"
options:
NSKeyValueObservingOptionNew
block:^(
id
observer,
id
object,
NSDictionary
*change) {
//NSLog(@"%@ %@ %@",observer,object,change);
//Person *p = (Person *)object;
//self.title = p.pName;
self
.title = change[
NSKeyValueChangeNewKey
];
}];
三:流程操作
1:创建 Person Object
1
2
3
4
5
6
7
#import <Foundation/Foundation.h>
@interface
Person :
NSObject
@property
(
nonatomic
,strong)
NSString
*pName;
@end
2: 下载FBKVOController---导入FBKVOController.h .m文件 ARC环境
1
2
#import "FBKVOController.h"
#import "Person.h"
3:创建Person对象(被观察者),及FBKVOController对象(管理观察者与被观察者);
1
2
3
4
5
@interface
RootViewController ()
{
Person *personOne;
FBKVOController *fbKVO;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
- (
void
)viewDidLoad
{
[
super
viewDidLoad];
self
.title = @
"TEST"
;
listArray = [[
NSMutableArray
alloc]initWithCapacity:5];
[listArray addObject:@
"FBKVOController"
];
personOne = [[Person alloc]init];
personOne.pName = @
"defaultName"
;
fbKVO = [FBKVOController controllerWithObserver:
self
];
[fbKVO observe:personOne keyPath:@
"pName"
options:
NSKeyValueObservingOptionNew
block:^(
id
observer,
id
object,
NSDictionary
*change) {
//NSLog(@"%@ %@ %@",observer,object,change);
//Person *p = (Person *)object;
//self.title = p.pName;
self
.title = change[
NSKeyValueChangeNewKey
];
}];
/**
一:kvo值检测类型;
1: NSKeyValueObservingOptionNew 传递变化之后的值;
2: NSKeyValueObservingOptionOld 传递变化之前的值;
3: NSKeyValueObservingOptionInitial 观察者会在程序初始时,也就是观察变化之前,优化执行一次 观察动作;即上述执行上面 block操作一次;并且传递 默认的值,和以后传递 变化后的值;
4: NSKeyValueObservingOptionPrior 会调用两次观察者操作,值改变之前,值改变之后;
二:获取 kvo的值;
change[NSKeyValueChangeNewKey] 新值;
change[NSKeyValueChangeOldKey] 旧值;
*/
}
4:添加改变 被观察者 Person的pName属性值变化操作,然后在 观察者观察到 pName值发生变化时,改变 self.title的值
1
2
3
4
5
6
7
8
9
10
11
#pragma mark action 点击
- (
void
)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(
NSIndexPath
*)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:
YES
];
int
nums = arc4random()%10;
personOne.pName = [
NSString
stringWithFormat:@
"newName%d"
,nums];
NSLog
(@
"new --> %@"
,personOne.pName);
}
//在 pName属性值发生变化时,改变self.title的值;
1
2
3
4
5
6
7
8
9
10
[fbKVO observe:personOne keyPath:@
"pName"
options:
NSKeyValueObservingOptionNew
block:^(
id
observer,
id
object,
NSDictionary
*change) {
//NSLog(@"%@ %@ %@",observer,object,change);
//Person *p = (Person *)object;
//self.title = p.pName;
self
.title = change[
NSKeyValueChangeNewKey
];
}];
5:如果想移除观察者:
1
2
3
4
//三种方式任你选择;
[fbKVO unobserve:personOne];
[fbKVO unobserve:personOne keyPath:@
"pName"
];
[fbKVO unobserveAll];
6: 效果:
改变值之前
改变值之后
0 0
- iOS kvo 结合 FBKVOController 的使用
- FBKVOController的使用
- KVO和异步图片下载的结合使用
- iOS中KVO的使用
- ios KVC KVO的使用
- ios KVO的简单使用
- FBKVOController的简单实用
- 【ios】iOS:KVO的概述与使用
- iOS:KVO的概述与使用
- iOS:KVO的概述与使用
- [ios开发基础之]KVO的使用
- IOS开发之----KVO的使用
- iOS:KVO/KVC 的概述与使用
- iOS:KVO的概述与使用
- iOS:KVO的概述与使用
- iOS:KVO的概述与使用
- iOS 中KVO和KVC的使用
- iOS:KVO的概述与使用
- Levinux,解决在非linux系统下在linux环境中使用和学习python问题
- Emacs (坑)
- 3DS电游“妖怪手表”销量破百万 7月出售新作
- VC++ 获取文件属性创建时间、修改时间和访问时间
- Java包命名规则引发的思考Java包命名规则引发的思考
- iOS kvo 结合 FBKVOController 的使用
- 微信+上品折扣:微信商场O2O第一战打阿里大本营
- 解析oracle的rownum(转)
- 小学生作文
- Currency Exchange(spfa)
- java 重定向和转发的区别
- js中获得当前时间是年份和月份
- 小学生作文
- cron