现在的iOS是默认支持多线程的,有些操作比较耗时,但这些耗时的线程不能阻塞主线程。因此需要在实现时,注意确保主线程的顺畅,及时响应用户的交互。
1. 处理耗时的逻辑操作
比如进行图像的压缩和裁剪等耗CPU或GPU的操作时,可以将这些操作放在全局队列中异步执行:
dispatch_async(dispatch_get_global_queue(0, 0), ^{
//complex logic operation
});
函数原型为:
dispatch_async(dispatch_queue_t queue, dispatch_block_t block);
async表明异步运行,block代表的是block操作任务,queue则是任务所处队列.
2. 处理耗时的UI操作
2.1 网络操作
有些需要与网络交互的操作,在网络返回前需要显示一个loading的菊花,然后等待网络返回,这时可以使用回调来处理。
比如:处理中的过程,定义为