代理一种软件设计模式
代理模式实现
@protocol
一对一
工作流程
一般声明为weak以规避循环引用
NSNotificationCenter
特点 1.是使用观察者模式来实现的用于跨层传递消息机制
2.传递方式一对多
如何实现通知机制?
KVO
OC 对观察者模式的又一实现
apple 使用isa混血(isa-swizzeling)来实现KVO
KVO
1 通过kvc设置value可以生效
2.通过成员直接赋值value可以不生效解决方案是
- (void)increase { 手动kvo //直接成员变量赋值 [self willChangeValueForKey:@"key"]; _name = @"zefeng"; [self didChangeValueForKey:@"key"]; }
KVC
key-value coding 健值编码 有无违背面向对象思想,key值无限制 valueforkey:
KVC
获取 getKey key isKey _key accessInstanceVariablesDirectly 方法 NO 不允许访问 YES则查询下面
NSInteger _age;
NSInteger _isAge;
NSInteger age;
NSInteger isAge;
设置 首先 setKey: _setKey: 方法
accessInstanceVariablesDirectly 方法 NO 不允许访问 YES则查询下面 成员变量 _key _isKey key isKey