iOS面试题
1. 一个NSObject对象占用多少内存?
- 系统分配了16个字节可以通过malloc_size获取得到实际分配的内存大小
- 实际使用了8个字节,可以通过class_getInstanceSize得到
2.对象的isa指针指向哪里?
- 实例(instance)对象的isa指向类对象
- 类对象的isa指向meta-class对象
- meta-class的isa指向基类的meta-class对象
3.OC的类信息存放在哪里
- 实例对象存放成员变量的具体值
- 类对象存放实例方法,属性,成员变量,协议
- meta-claa对象存放类方法
4.iOS用什么方式实现对一个对象的KVO?(KVO的本质是什么?)
- 利用runtimeAPI动态生成了一个新的子类NSKVONotifying_class,并让实例对象的isa指向这个新的子类
- 当成员变量的值发生改变时,会触发Foundation的函数_NSSetxxxValueAndNotify
1.willChangeValue
2.父类的setter方法
3.didChangeValue
4.内部会触发监听器(Observer)的监听方法(observerValueForKeyPath:ofObject:change:context)
5.如何手动触发KVO?
- 通过手动调用willChangeValue didChangeValue手动触发KVO
6.直接修改成员变量会触发KVO么?
7.通过KVC修改属性会触发KVO么?
8.KVC赋值取值的过程是怎么样的

