NSOperation 是苹果公司大力推荐的“并发“技术,程序员已经不需要关心线程以及线程的生命周期。
NSOpetation 的核心概念:将“操作”添加到”队列“。
GCD 的核心概念:将”任务“添加到”队列“,指定任务的执行方法。
---
GCD & NSOperation 的对比
GCD 在iOS 4.0 推出的,主要针对多核处理器做了优化的并发技术,是 C 语言的
-将"任务[block]"添加到"队列[串行/并发/主队列/全局队列]",并且指定执行任务的函数[同步/异步]
-线程间通讯dispatch_get_main_queue()
-提供了一些NSOperation 不具备的功能
-一次性执行
-延迟执行
-调度组(在op中也可以做到,就是有点麻烦)
NSOperation 在 iOS 2.0 推出的,苹果推出 GCD 之后,对 NSOperation底层重写了一遍
-将操作[异步执行的任务]添加到队列[并发队列],就会立即异步执行
-mainQueue
-提供了一些GCD 实现起来比较困难的功能!
-最大并发操作数
-队列的暂停/继续
-取消所有操作
-指定操作之间的依赖关系(GCD 用同步实现)
---
NSOperation 类是一个抽象类
特点:
-不能直接使用!
目的:
- 定义子类共有的属性和方法
子类
- NSInvocationOperation
GCD & NSOperation 的对比
GCD 在iOS 4.0 推出的,主要针对多核处理器做了优化的并发技术,是 C 语言的
-将"任务[block]"添加到"队列[串行/并发/主队列/全局队列]",并且指定执行任务的函数[同步/异步]
-线程间通讯dispatch_get_main_queue()
-提供了一些NSOperation 不具备的功能
-一次性执行
-延迟执行
-调度组(在op中也可以做到,就是有点麻烦)
NSOperation 在 iOS 2.0 推出的,苹果推出 GCD 之后,对 NSOperation底层重写了一遍
-将操作[异步执行的任务]添加到队列[并发队列],就会立即异步执行
-mainQueue
-提供了一些GCD 实现起来比较困难的功能!
-最大并发操作数
-队列的暂停/继续
-取消所有操作
-指定操作之间的依赖关系(GCD 用同步实现)
---
NSOperation 类是一个抽象类
特点:
-不能直接使用!
目的:
- 定义子类共有的属性和方法
子类
- NSInvocationOperation
- NSBlockOperation
NSOperation提供的一些常用功能:
在做NSOperation的时候要养成好习惯:
1》设置最大并发数
2》暂停,继续,取消全部操作
*****************沙盒********************
在IOS 7.0 之前,bunlde的路径和沙盒在同一路径下,IOS 8.0 之后就分成了两个目录,这样更安全。
沙盒的几个文件夹:
-Documents 保存由应用程序本身产生的文件和数据。目录中的文件会被自动保存在iCloud。
注意:不要保存从网络上下载的文件,否则会无法上架。
-Cache 保存临时文件,后续需要使用(例如缓存图片,离线数据:地图数据)
系统不会清理目录中的文件,但是要求程序开发时提供Cache目录的清理解决方案
-tmp 保存临时文件,后续不需要使用。
系统会自动清理该目录中的文件(例如重启手机)
-Preferences 用户偏好 使用NSUserDefault 直接读写
如果要想让数据及时写入磁盘,还需要调用一个同步方法 synchronize
沙盒目录的获取:
*************GIT使用***************
Xcode集成了常用的终端命令,但关键的几个命令还是一定要进终端
Git中开发每告一段落,都需提交代码,并写详细说明,便于需要的时候查找。