[精通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();
为此,苹果公司提供了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();
相关文章推荐
- Python3写爬虫(四)多线程实现数据爬取
- C#实现多线程的同步方法实例分析
- 浅谈chuck-lua中的多线程
- C#简单多线程同步和优先权用法实例
- C#多线程学习之(四)使用线程池进行多线程的自动管理
- C#多线程编程中的锁系统(三)
- C#多线程学习之(六)互斥对象用法实例
- 基于一个应用程序多线程误用的分析详解
- C#多线程学习之(三)生产者和消费者用法分析
- C#多线程学习之(一)多线程的相关概念分析
- C#多线程之Thread中Thread.IsAlive属性用法分析
- C#控制台下测试多线程的方法
- Ruby 多线程的潜力和弱点分析
- C#中WPF使用多线程调用窗体组件的方法
- c#实现多线程局域网聊天系统
- PHP使用CURL实现多线程抓取网页
- 浅解关于C#多线程的介绍
- 批处理程序中的“多线程”处理代码
- c#中多线程访问winform控件的若干问题小结
- C#中的多线程多参数传递详解