一、 UITableView有哪些优化方式
- 使用不透明视图(不透明的视图可以极大地提高渲染的速度)
- 不要重复创建不必要的table cell
- 减少视图的数目
- 不要做多余的绘制工作
- 预渲染图像
- 不要阻塞主线程
二、 线程和进程的区别?
程序启动就是一个进程,进程中可能包含多个线程。在iOS开发中,UI界面的刷新是在主线程完成。所以网络请求全部会阻塞主线程,我们在开发过程中为了避免程序假死,就会单开线程来做网络请求的操作。当网络请求完成,通过回调,进行数据交互。
主要分成两类:同步请求,异步请求
同步请求:单线程,在下载完成前,阻塞线程,造成假死。
异步请求:开辟新线程执行下载,不会阻塞主线程程序执行,当下载完毕后,通过回调完成数据反馈
三、 iOS中都有哪些技术可以开辟线程,它们的联系和区别是什么?
- NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程)
- 以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题
1> NSOperation/NSOperationQueue 面向对象的线程技术
2> GCD-- Grand Central DIspatch (派发)是基于C语言的框架,可以充分利用多核,是苹果推荐使用的多线程技术
以上者三种编程方式从上到下,抽象度层次是从低到高的,抽象度越高的使用越简单,也是Apple最推荐使用的,在项目中很多框架技术分别使用了不同多线程技术。
三种线程对比: - NSThread
--优点:NSThread比其他两个轻量级,使用简单
--缺点:需要自己管理线程的生命周期、线程同步、加锁、睡眠以及唤醒等。线程同步对数据的加锁会有一定的系统开销 - NSOperation:
--不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上
-- NSOperation是面向对象的 - GCD:
-- Grand Central Dispatch是由苹果开发的一个多核编程的解决方案。iOS4.0才能使用,是替代NSThread,NSOperation的高效和强大的技术
--GCD是基于C语言的
网友评论