您的位置:首页 > 移动开发 > IOS开发

[精通iOS开发(第5版)]第15章 Grand Central Dispatch和后台处理笔记

2015-07-08 22:21 260 查看
本章主要讲述如何在IOS设备上进行多线程编程的问题。

为此,苹果公司提供了GCD技术进行任务的分派。

另外还添加了block语言功能:

block可以在把代码块传递给另一个方法或函数的位置进行定义,即所谓的内联方式定义。(感觉这个特性只是增加了代码块的可读性)

block可以访问在创建它的范围内可用的变量。(这是一个比较实用的特性,避免了大量参数的传递)

block可以以读/写的方式访问以__block修饰的变量。(这样就可以进行不同线程间的数据交互)

GCD提供了dispatch_get_main_queue()方法获取主线程队列,在非主线程中可以往此队列中添加block以操作UI。(因为UI是非线程安全的,所以需要由主线程更新)

GCD提供了dispatch group来进行并行操作,添加到同一个group内的所有程序块可以并行进行执行;还可以通过dispatch_group_notify方法在当前group内的所有程序块都执行完毕后再执行接下来的操作。

2015-07-08 22:20:33

本章的第二部分主要讲述了应用程序的运行状态(未运行、活动、不活动、后台、挂起);

其中未运行、挂起状态一般无法进入,所以不会去处理;开发人员需要处理的就是应用程序在活动<-->不活动<-->后台三个状态之间进行切换时的四个委托方法或者通知;

尤其是从不活动状态进入到后台状态时,由于在5秒后应用程序将会被挂起,所以此时需要考虑大量的处理(比如释放文件图片资源、断开网络连接;保存当前界面信息)以减少应用程序对于内存的占用;

而且在进入到后台状态时,可以使用UIApplication的beginBackgroundTashWithExpirationHandler:方法请求获得更多的停留时间,以避免进入挂起状态。

$(".MathJax").remove();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios开发 多线程 gcd