一天一工程总结系列-7.7-KVOController

2015
7,7
一天一工程总结系列
对各类优秀工程的剖析和拙见。有些胡言乱语还请作者谅解。

 

KVOController

1结构

1.1.@interface NSObject (FBKVOController)--可以用这种方式

1.2.FBKVOController--可以用这种方式

包括以下类

@interface _FBKVOInfo : NSObject
@interface _FBKVOSharedController : NSObject--单例
@interface FBKVOController : NSObject----三个变量:observer_objectInfosMap_lock

2.添加观察者的步骤,

  1.创建FBKVOInfo对象,

  2.添加到_objectInfosmap,

  3.[object addObserver:self forKeyPath:info->_keyPath options:info->_options context:(void *)info];

3.

4.其他

4.1instancetype

 

KVO的另类解析

被观察者:A

观察者:B

[A addObserver:B forKeyPath:A's成员变量'skeypath options:flag context:NULL];

 

B需要实现代理:

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

1.keyPath ?=A's成员变量'skeypath

   YES    doSomething

   NO     忽略

 

触发点:[A setValue: forKeyPath:];

对被观察者的变量赋值,观察者拿到这个事件,+环境参数,做出观察者的响应。

posted @ 2015-07-07 20:51  magicya  阅读(105)  评论(0编辑  收藏  举报