【读书笔记】iOS-GCD-GCD与perfomSelector系方法比较
来源:互联网 发布:jenkins mac 安装包 编辑:程序博客网 时间:2024/06/06 11:03
一,GCD是导师步执行任务的技术之一。一般将应用程序中记述的线程管理用的代码在系统级中实现。开发者只需要定义想执行的任务并追加到适当的Dispatch Queue中,CGD就能生成必要的线程并计划执行任务。由于线程管理是作为系统的一部分来实现的,因此可以统一管理,也可执行任务,这样就比以前的线程更有效率。
二,在导入GCD之前,Cocoa框架提供了NSObject类的performSelectorInBackground:withObject实例方法和performSelectorOnMainThread实例方法等简单的多线程编程技术。
三,performSelector系方法确实要比使用NSThread类进行多线程编程简单,但与之前使用GCD的源代码相比,结果一目了然。相比performSelector系方法,GCD更为简洁。如果使用GCD,不仅不必使用NSThread类或performSelector类方法这些过时的API,更可以通过CGD提供的系统级线程管理提高执行效率。
GCD代码:
dispatch_async(queue, ^{ /* *长时间处理(如AR用画像识别,数据库访问) */ dispatch_async(dispatch_get_main_queue(), ^{ /* *只在主线程可以执行的处理(如用户界面更新) */ }); });
performSelector代码:
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //执行后台线程 [self performSelectorInBackground:@selector(doWork) withObject:nil];}//后台线程处理-(void)doWork{ /* *长时间处理(如AR画像识别,数据库访问) */ //长时间处理结束,主线程使用其处理结果 [self performSelectorOnMainThread:@selector(doneWork) withObject:nil waitUntilDone:NO];}//主线程处理方法-(void)doneWork{ /* *只在主线程可以执行的处理,如用户界面更新 */}
参考资料:《Objective-C高级编程 iOS与OS X 多线程和内存管理》
0 0
- 【读书笔记】iOS-GCD-GCD与perfomSelector系方法比较
- 【读书笔记】iOS-GCD-block
- 【读书笔记】iOS-GCD-使用方法
- 【读书笔记】iOS-GCD-API
- 【读书笔记】iOS-GCD-多线程编程
- 【读书笔记】iOS-GCD-Dispatch Queue
- 【读书笔记】iOS-GCD-Dispatch Source
- iOS GCD常用方法
- 【读书笔记】iOS-GCD-系统提供的dispatch方法
- iOS - GCD与多线程
- iOS 多线程与GCD
- iOS NSOperationQueue与GCD
- iOS 多线程与GCD
- 计时器比较 gcd与stein
- GCD与NSOperationQueue的比较
- GCD 定时器--与NSTimer比较
- 【读书笔记】iOS-GCD-网络编程要不要使用GCD
- iOS GCD常用方法总结
- 怎么样才能使你的项目更加顺利呢
- 额
- Swift学习- 方法(十一)
- Spark ML Pipelines实例
- 【SQLite关系型数据库管理系统】SQLite命令
- 【读书笔记】iOS-GCD-GCD与perfomSelector系方法比较
- 【Java数据结构】二分查找
- Kafka深入解析Log存储
- 实际试验遇到的一些python问题,包括图片格式转换,python中调用linux命令行,用python画图等等。
- Caffe框架,了解三个文件
- 未释放kafka资源导致的问题
- Theano里配置GPU的新方法
- Code First for Mysql 错误:未为提供程序“MySql.Data.MySqlClient”找到任何 MigrationSqlGenerator。请在目标迁移配置类中使用 SetSql
- CADisplayLink