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 

首先在mian.stroyboard界面上拖一个imgView控件和一个button按钮, 按住control键拖到viewController.h文件中创建

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


0 0
原创粉丝点击