@iwanglong
2019-02-18T07:36:54.000000Z
字数 535
阅读 249
Object-C语言
iOS
分类
- 怎么用的
- 声明私有方法
- 分解体积庞大的类文件
- 把Framework的私有方法公开化
- 特点
- 可以添加哪些内容
- 加载调用栈
- _objc_init -> map_2_images -> map_images_nolock -> _read_images -> remethodizeClass
- 分类添加的方法可以“覆盖”原类方法
- 同名分类方法谁能生效取决于编译顺序
关联对象
扩展
- 用处
- 区别
- 编译时决议
- 只以声明的形式存在,多数情况下寄生于主类的.m中
- 不能为系统类添加扩展
代理
通知
- 是使用观察者模式来实现的用于跨层的消息传递
- 一对多
- 如何实现通知机制
KVO实现机制
- KVO 是key-value observing
- KVO 是观察者模式的又一种实现
- KVO 是isa混写(isa-swizing)技术来实现
- 运行时动态创建子类,修改isa指向,重写setter方法
- 通过KVC设置value能否生效?
- 通过成员变量直接赋值value能否生效?
- 不能生效,可以通过手动前后添加
willCHangeValueForKey didChangeValueForKey
KVC
属性关键字