一、创建多线程的五种方式

1.开启线程的方法一

    NSThread * thread=[[NSThread alloc] initWithTarget:self selector:@selector(_update) object:nil];

2.开启线程的方法二

    [NSThread detachNewThreadSelector:@selector(_update) toTarget:self withObject:nil];

3.开启线程的方法三

    [self performSelectorInBackground:@selector(_update) withObject:nil];

4.开启线程的方法四

    NSOperationQueue *queue=[[NSOperationQueue alloc] init];[queue addOperationWithBlock:^{for(int i=0;i<50;i++){printf("子线程\n");}}];

5.开启线程的方法五

    //第一步开启线程池NSOperationQueue * queue=[[NSOperationQueue alloc] init];//设置并发数目[queue setMaxConcurrentOperationCount:2];//第二部创建多线程添加到线程池NSInvocationOperation * thread1=[[NSInvocationOperation alloc] initWithTarget:self selector:@selector(_update1) object:nil];NSInvocationOperation *thread2=[[NSInvocationOperation alloc] initWithTarget:self selector:@selector(_update2) object:nil];[thread1 setQueuePriority:NSOperationQueuePriorityVeryLow];[thread2 setQueuePriority:NSOperationQueuePriorityVeryHigh];[queue addOperation:thread1];[queue addOperation:thread2];

二、多线程应用实例,加载图片。

1.核心思想

  考虑到如果加载网络图片会延迟,在一个主线程加载会影响控件的渲染,此时可以采取多线程,异步加载完成后刷新UI。

2.实现思路

  通过为UIImageView 增加类目来实现多线程下载。

  主要代码:

#import "UIImageView+thread.h"@implementation UIImageView(load)- (void) setImageWithUrl:(NSString *)url{[self performSelectorInBackground:@selector(_loadImage:) withObject:url];}- (void) _loadImage:(NSString *)u{@autoreleasepool {NSURL *url=[NSURL URLWithString:u];NSData *data=[NSData dataWithContentsOfURL:url];UIImage *image=[UIImage imageWithData:data];[self performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:NO];}
}

作者:杰瑞教育
出处:http://www.cnblogs.com/jerehedu/ 
本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

IOS开发中多线程的使用相关推荐

  1. iOS开发中多线程的那些事

    iOS开发深入之后还是要接触多线程和runloop的,写篇博客讲解.记录下iOS开发中的多线程技术. 线程.进程 什么是线程.进程   有的人说进程就像是人的脑袋,线程就是脑袋上的头发~~.其实这么比 ...

  2. iOS 开发中的多线程

    线程.进程 什么是线程.进程   有的人说进程就像是人的脑袋,线程就是脑袋上的头发~~.其实这么比方不算错,但是更简单的来说,用迅雷下载文件,迅雷这个程序就是一个进程,下载的文件就是一个线程,同时下载 ...

  3. iOS开发中各种关键字的区别

    1.一些概念 1.浅Copy:指针的复制,只是多了一个指向这块内存的指针,共用一块内存. 深Copy:内存的复制,两块内存是完全不同的, 也就是两个对象指针分别指向不同的内存,互不干涉. 2.atom ...

  4. iOS开发-多线程开发之线程安全篇

    前言:一块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源,比如多个线程访问同一个对象.同一个变量.同一个文件和同一个方法等.因此当多个线程访问同一块资源时,很容易会发生数据错误及数据不安 ...

  5. 在iOS开发中使用FMDB

    在iOS开发中使用FMDB 前言 SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库.iOS SDK 很早就支持了 SQLite,在使用时,只需 ...

  6. IOS开发中单例模式使用详解

    第一.基本概念 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问. 第二.在IOS中使用单例模式的情 ...

  7. iOS开发-多线程编程技术(Thread、Cocoa operations、GCD)

    简介 在软件开发中,多线程编程技术被广泛应用,相信多线程任务对我们来说已经不再陌生了.有了多线程技术,我们可以同做多个事情,而不是一个一个任务地进行.比如:前端和后台作交互.大任务(需要耗费一定的时间 ...

  8. ios加载本地html懒加载图片方案,IOS开发中加载大量网络图片优化方法

    IOS开发中加载大量网络图片如何优化 1.概述 在IOS下通过URL读一张网络图片并不像其他编程语言那样可以直接把图片路径放到图片路径的位置就ok,而是需要我们通过一段类似流的方式去加载网络图片,接着 ...

  9. iOS开发之多线程--多线程简单介绍

    一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcode,系统就会分别启动2个进程 通过& ...

最新文章

  1. 报名|首届中国智慧城市大数据开放创新应用大赛
  2. Android中的各种Adapter
  3. 机器学习中训练集、验证集和测试集的区别
  4. 鸿蒙智慧屏电视,鸿蒙os全面推送,立刻买了一台华为智慧屏电视s pro65
  5. linux下搭建博客21天打卡Day6
  6. Python入门--变量,浮点型,布尔型,字符串
  7. LAMP YUM安装配置实战
  8. 【转】Google Chrome浏览器调试
  9. PS CC 2014使用到期解决方法,其他类似
  10. ubuntu java ide,在Ubuntu 18.04系统中下载与安装Eclipse IDE的方法
  11. View 添加阴影效果
  12. Warring the /usr/local/mysql/data directory is not owned by the 'mysql' or '_mysql' user
  13. 正则表达式的常规用法 替换 查找
  14. 5种让你入门免费学习编程的方法
  15. iOS--常见的几种数据存储方式
  16. Android平板做win10显示器,win10怎么投影到安卓平板上
  17. java oval_Java对象校验框架Oval怎么使用 | 学步园
  18. 苹果x电池容量_关于苹果18W PD快充你想知道的,全都在这里了
  19. 《梦幻西游》手游主程刘强:如何提供一个稳定高效的MMO手游服务器引擎
  20. C# Winfrom学生管理系统

热门文章

  1. Cassandra安装测试
  2. C#2.0模拟List和内置算法
  3. DataGrid鼠标事件处理
  4. WMI技术介绍和应用——查询系统信息
  5. 对象检测工具包mmdetection简介、安装及测试代码
  6. matlab神经网络工具箱函数汇总
  7. mpi并行 java_【并行计算】用MPI进行分布式内存编程(一)
  8. web前端知识点太多_初学web前端,学习方法容易走偏,这是为什么?
  9. python tensor_Python深度学习 2.3 张量运算
  10. opengl正方形绕点旋转_一题十五种解法够不够? 旋转,构造,四点共圆乐不停...