- 内存管理方面(ARC、MRC、autorelease、autoreleasepool,简单粗暴的说一说内存管理)
Objective-C语言是是使用引用计数来管理内存的,也就是说每个对象都有个可以递增或递减的计数器.如果想使某个对象继续存活,就递增其引用计数;用完了之后,就递减其计数.当计数变为0,也就表示没有人用这个对象了,于是就可以把它销毁了.
- Runtime方面(消息发送,NSHipster 对象关联,NSHipster 方法交换等等,Runtime全方位装逼指南)
说白了Objective-C 是一门动态语言,而它需要一个运行时系统也就是Runtime,这里不是一两句话就能解释清楚的,还需要自己去体验runtime的强大,多敲敲代码
- KVO内部实现原理(实现原理)
简单来说:系统在运行时动态创建了一个继承自Person的子类NSKVONOtifying_Person类。然后KVO会在这个派生类中,重写基类中任何被观察属性的setter方法,在setter方法中实现真正的通知机制。
- Runloop方面(深入理解RunLoop)
RunLoop是一个对象,这个对象在循环中用来处理程序运行过程中出现的各种事件(比如说触摸事件、UI刷新事件、定时器事件、Selector事件),从而保持程序的持续运行;而且在没有事件处理的时候,会进入睡眠模式,从而节省CPU资源,提高程序性能。
使用场景:
-例如很多人都熟悉的使用perfromSelector在默认模式下设置图片
-利用Observer在界面空闲状态下计算出UITableViewCell的高度并进行缓存。
-关于iOS实时卡顿监控,同样是利用Observer对RunLoop进行监视。
- HTTPS通信过程(HTTPS工作原理)
HTTPS是一种基于SSL/TLS的HTTP协议,所有的http数据都是在SSL/TLS协议封装之上传输的。
HTTPS协议在Http协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议。
——>HTTP协议运行在TCP之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。
——>HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密
- UITableView的优化手段方法(iOS 保持界面流畅的技巧,实战UITableview深度优化)
总结有这么几点:
1、避免主线程阻塞,获取数据、数据处理等耗时操作,应该放入后台线程异步处理,处理好后再通知主线程刷新界面
2、避免频繁的对象创建
3、减少对象的属性赋值操作
4、异步绘制
5、简化视图结构
6、减少离屏渲染:比如圆角问题,就会造成离屏渲染
7、刷新数据时尽量少用[tableview reloadData];
8、cell的高度要计算好
多线程方面(GCD、NSOperation居多)(关于iOS多线程,你看我就够了)
SDWebImage源码分析
事件传递以及响应链(史上最详细的iOS之事件的传递和响应机制)
相关推荐
组件化:为了更好的让拆分出去的业务工程能够独立运行,必须进行组件拆分并且实现组件服务化