iOS多线程编程之NSThread的使用
来源:互联网 发布:淘宝拍卖包包是真的吗 编辑:程序博客网 时间:2024/06/14 21:12
NSThread 有两种直接创建方式:
- (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument
+ (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument
第一个是实例方法,第二个是类方法,使用方法如下:
[NSThread detachNewThreadSelector:@selector(doSomething:) toTarget:self withObject:nil];
NSThread* myThread = [[NSThread alloc] initWithTarget:self selector:@selector(doSomething:) object:nil];
[myThread start];
其中类方法是自启动的(直接创建并运行),实例方法是先创建线程,再进行线程操作。
各参数的含义:
selector :线程执行的方法,这个selector只能有一个参数,而且不能有返回值。
target :selector消息发送的对象
argument:传输给target的唯一参数,也可以是nil
新建singeView app
IBOutlet UIImageView *iv; - (IBAction)showImage:(id)sender;属性和方法;
ViewController.m中实现:
#import "ViewController.h"
@implementation ViewController
- (void)viewDidLoad
{
[superviewDidLoad];
}
- (IBAction)showImage:(id)sender
{
NSString* url =@
@"https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png";
// 创建新线程对象
NSThread *thread = [[NSThreadalloc]initWithTarget:self
selector:@selector(downloadImageFromURL:)object:url];
// 启动线程
[thread start];
}
// 定义一个方法作为线程执行体。
-(void)downloadImageFromURL:(NSString *) url
{
// 从网络获取数据
NSData *data = [[NSDataalloc]
initWithContentsOfURL:[NSURLURLWithString:url]];
// 将网络数据初始化为UIImage对象
UIImage *image = [[UIImagealloc]initWithData:data];
if(image !=nil)
{
//在主线程中执行updateUI:方法
[selfperformSelectorOnMainThread:@selector(updateUI:)
withObject:imagewaitUntilDone:YES];
}
else
{
NSLog(@"---下载图片出现错误---");
}
}
-(void)updateUI:(UIImage*) image
{
self.iv.image = image;
}
@end
效果如下:当加载地址是使用http通信时,会产生如下错误:
Xcode 7中http通信出现如下错误:Application Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
原因及解决方法:http://www.jianshu.com/p/c663a1f274fa
- iOS多线程编程之NSThread的使用
- IOS多线程编程之NSThread的使用
- IOS多线程编程之NSThread的使用
- iOS多线程编程之NSThread的使用
- iOS多线程编程之NSThread的使用
- iOS多线程编程之NSThread的使用
- iOS多线程编程之NSThread的使用
- iOS多线程编程之NSThread的使用
- iOS多线程编程之NSThread的使用
- iOS多线程编程之NSThread的使用
- iOS多线程编程之NSThread的使用
- iOS多线程编程之NSThread的使用
- iOS多线程编程之NSThread的使用
- iOS多线程编程之NSThread的使用
- iOS多线程编程之NSThread的使用
- iOS多线程编程之NSThread的使用
- iOS多线程编程之NSThread的使用
- iOS多线程编程之NSThread的使用
- 线性回归2(局部加权回归)
- 今日BBC
- MySQL 索引优化 btree hash rtree
- ListView的运行优化
- hdu 5640 King's Cake【思维】
- iOS多线程编程之NSThread的使用
- 项目2-本月有几天
- 九度题目1124Digital Roots
- 运动控制卡学习之路-基本单轴运动_1
- 第三周项目 谁是小偷
- ubuntu-桌面假死的解决办法
- java设计模式之单例模式_7种写法优缺点
- Android程序各个模块的简单分析
- Git笔记