iOS中关于多线程的一些方法
来源:互联网 发布:网络视频广告价格表 编辑:程序博客网 时间:2024/05/01 09:28
OC里面, 程序的多线程执行是一个很重要的环节, 单线程的APP是不能满足用户体验的, 因为, 单线程的app过于单调, 并且运行多个程序的时候容易产生加载缓慢或者网络延迟的问题, 影响了用户体验肯定不是一个好的app, 所以我们要进行多线程的操作:
多线程分为三种类型:
1. NSThread:
初始化方法:
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector( ) object:nil];// [thread start];// [thread release];便利构造器:
[NSThread detachNewThreadSelector:@selector( ) toTarget:self withObject:nil];
2.NSobject:
//在后台运行
[self performSelectorInBackground:@selector( ) withObject:nil];
3. (1)我们可以自定义一个NSOperation 来设置同步和并发
Operation *operation = [[Operation alloc] init]; //[operation start]; Operation *operation2 = [[Operation alloc] init]; //添加子线程 并设置他们的同步和并发 //NSOperationQueue 线程队列 (会自动调用他的start方法) NSOperationQueue *queue = [[NSOperationQueue alloc] init]; [queue setMaxConcurrentOperationCount:1];//限制最大的并发数(若为1为同步) [queue addOperation:operation]; [queue addOperation:operation2]; [operation2 release]; [operation release]; [queue release];(2) 我们可以使用系统的多线程方法
// NSBlockOperation
NSBlockOperation *ope =[NSBlockOperation blockOperationWithBlock:^{ //block里面是多线程要执行的代码 } }]; NSOperationQueue *queue = [[NSOperationQueue alloc] init]; [queue addOperation:ope]; [queue release];
//NSInvocationOperation NSInvocationOperation *opera = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector( ) object:nil]; NSOperationQueue *queue = [[NSOperationQueue alloc] init]; [queue addOperation:opera];
[queue release];
GCD使我们开发过程中最常用的多线程方法,GCD大致有两种方式: 同步和并发:
步骤: 创建一个同步队列, 把Block中的内容放入同步队列中, 然后把队列和主线程异步执行
dispatch_queue_t queue = dispatch_queue_create("first", DISPATCH_QUEUE_SERIAL); //把block中的内容(多线程的代码)放入同步队列中, 然后把队列和主线程异步执行(因为是C语言不能写自动释放池) dispatch_async(queue, ^{ //显示到界面上, 所有根UI有关的内容全部都要在主线程上运行 dispatch_async(dispatch_get_main_queue(), ^{ }); });}
GCD的并行队列
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ });});}
0 0
- iOS中关于多线程的一些方法
- 关于IOS多线程的一些总结
- ios 多线程的一些方法使用
- Delphi关于多线程同步的一些方法
- Delphi关于多线程同步的一些方法
- Delphi关于多线程同步的一些方法
- Delphi关于多线程同步的一些方法
- 关于IOS一些有的没的 – IOS多线程
- delphi中多线程同步的一些方法
- delphi中多线程同步的一些方法
- iOS 关于图片处理的一些方法。。。
- iOS开发关于后台的一些方法
- iOS开发:关于layout的一些方法
- iOS - Swift 关于颜色的一些方法
- IOS中多线程的同步方法
- iOS中实现多线程的方法
- Delphi关于多线程同步的一些方法(转)
- 关于iOS的多线程
- 追求代码质量: 不要被覆盖报告所迷惑
- linux下weblogic启动报错
- 输出1000到2000年的闰年的年份
- CSDN博客ByeBye
- python邮件发送
- iOS中关于多线程的一些方法
- C++基础知识---static const成员变量的初始化
- java验证码的生成
- 春天用到的设计模式
- 【Android】解决第一次安装Android Studio1.0版本未翻墙情况下,无法进入Android Studio
- unity3D--数据库
- 通过 Python 装饰器实现DRY(不重复代码)原则
- SPRING事务的属性有哪些?其中,事务隔离级别有哪几种?什么情况需要使用这几种事务隔离级别?
- 使用Mockup Plus的九大理由