14、KVC和KVO
》KVC,key-value coding键值编码,通过setValue: forKey: 的模式给对象设置属性的值,有点类似于C#中的反射机制
1、基本数据类型setValue时必须封装成对象,解封时时自动的
2、属性为对象时,可以通过键的路径进行设置和访问。setValue: forKeyPath:和valueForKeyPath。path的访问
是通过点来逐层访问,如Book对象的属性Author,"author.name"为访问作者姓名,
3、属性的下划线和没有下划线是一样的,如"author.name"和"_author._name"
》KVO,key-value observer键值观察者。主要应用于观察者模式
1、注册监听
- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath
options:(NSKeyValueObservingOptions)options context:(void *)context;
2、实现监听
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context;
3、移除监听
- (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath;
15、谓词NSPredicate
》创建谓词 predicateWithFormat,format中可以用>,=,<,>=,<=,&&,and,&&,or,||,in(大括号包含列表或者传入数组),
beginswith,endswith,contains,like。
也可以用占位符
》evaluateWithObject判断对象是否满足设定的条件
》过滤数组filteredArrayUsingPredicate和过滤可变数组filterUsingPredicate
16、通知NSNotification
》发出通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"" object: userInfo];
》接受通知
[[NSNotificationCenter defaultCenter] addObserver:self selector: object];
》处理通知,通过第二步中selector来处理通知
》通知为一对多,缺点是不易于维护和管理,最好用delegate模式