当前位置: 首页 > 工具软件 > KVOController > 使用案例 >

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

秦才英
2023-12-01

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:];

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

转载于:https://www.cnblogs.com/so-magic/p/4628495.html

 类似资料: