面试题收录

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.架构模式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,657评论 8 265
  • 1、页面上点击了某个视图,画出事件的响应链和传递链 2、视图上某块区域如何让其不响应点击 3、应用启动加速优化 4...
    欢博阅读 138评论 0 1
  • 1.ui中的batching一个红色一个蓝色怎么合并它们? batching:批处理 打图集,合并材质 2.2个...
    FollowYour_784e阅读 247评论 0 0
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,148评论 1 32
  • 很多专家学者研究了很多关于人性的本质,正是几百万年来刻在人类基因里的控制欲, 让人们觉得一切都是在自己的控制之下,...
    Aily0108阅读 335评论 0 0