面试题收录

1. KVO实现原理

答案:
1. KVO是基于runtime机制实现的;
2. 某个类的属性对象第一次被观察的时候,系统会在运行时动态创建一个该类的派生类,在这个派生类中重写基类中任何被观察属性的setter方法,派生类在被重写的setter方法内实现真正的通知机制;
3. 如果基类为Person,那么生成的派生类名为NSKVONotifying_Person;
4. 每个类对象都有一个isa指针指向当前类,当一个类对象第一次被观察,那么系统会偷偷将isa指针指向动态生成的派生类,从而再给被监控属性赋值的时候执行的是派生类的setter方法;
5. 键值观察通知依赖于NSObject两个方法: willChangeValueForKey: 和 didChangevlueForKey: ,在一个被观察者属性发生改变之前 willChangeValueForKey:一定会被调用,这就会记录旧的值。当发生改变之后,didChangeValueForKey:会被调用,继而 observeValueForKey:ofObject:change:context: 也会被调用。

2. 说说你理解的埋点
3. 消息转发机制原理
4. 说说你理解的weak属性
5. 假如controller臃肿,如何优化
6. 项目中网络层如何做安全处理
7. .main{}函数之前的过程有哪些
8. 线程跟进程区别
9. 多线程使用 NSOperation、NSThread、GCD
10. 设计模式
11. 解释修饰关键字
12. NSRunLoop理解
13.iOS Scoket连接和HTTP连接的区别?
14. 定时器与线程的区别
15. NSRunLoop与NSTimer的区别
16. ReactCocoa
17. block修饰
18. runloop与线程关系
19.怎么高效的实现控件的圆角效果
20.weak与copy用法
21.架构模式

推荐阅读更多精彩内容