多线程
1.不能把耗时操作放到主线程中 因为渲染界面、接收用户触摸事件等操作全部在主线程中,如果把耗时代码写到了主线程中会导致界面阻塞
2.不能把更新界面操作放到子线程中,因为如果写到子线程中会报错,而且修改的效果并不能立即呈现,需要回到主线程中去修改页面从才能保证修改效果及时显示出来
耗时操作:1.网络相关操作 2.大量运算 3.和大文件相关 4.线程睡眠代码
开启子线程的方式有三种:
1.NSThread:OC语言提供的开启线程的方式不涉及线程队列
2.GCD:Grand Central Dispatch(中央任务分发)C语言所支持的通过block实现的开启线程的方式
3.NSOperation:通过OC语言实现,可以控制线程并发的数量 也可以设置线程和线程之间的依赖关系
GCD和NSOPeration比较:GCD更底层所以更高效,代码更简洁,NSOperation更灵活提供的线程相关的方法更多
线程队列:串行队列 和 并行队列
同步:指的是依次执行 不同时执行
通过开启线程去下载图片又叫做,异步加载或延迟加载
异步加载:指的是多线程加载 意思是在不影响主线程的情况下进行图片加载 同时执行
多线程安全问题:通过线程同步的方式解决安全问题
线程同步的方式有三种:1.同步代码块 2.NSLock 3.NSCondition
程间通信:通过performSelector的方式实现线程间通信
进程间通信:进程代表应用程序 两个应用程序间通信