标签:
iOS有三种多线程技术:
#import "ViewController.h" #define kURL @"http://avatar.csdn.net/2/C/D/1_totogo2010.jpg" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // [NSThread detachNewThreadSelector:@selector(downloadImage:) toTarget:self withObject:kURL]; NSThread *thread = [[NSThread alloc]initWithTarget:self selector:@selector(downloadImage:) object:kURL]; [thread start]; } -(void)downloadImage:(NSString *) url{ NSData *data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:url]]; UIImage *image = [[UIImage alloc]initWithData:data]; if(image == nil){ }else{ [self performSelectorOnMainThread:@selector(updateUI:) withObject:image waitUntilDone:YES];//在主线程中执行(线程间通讯) } } -(void)updateUI:(UIImage*) image{ self.imageView.image = image; } @end
#import "ViewController.h" #define kURL @"http://avatar.csdn.net/2/C/D/1_totogo2010.jpg" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSInvocationOperation *operation = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(downloadImage:) object:kURL]; NSOperationQueue *queue = [[NSOperationQueue alloc]init]; [queue addOperation:operation]; // Do any additional setup after loading the view, typically from a nib. } -(void)downloadImage:(NSString *)url{ NSLog(@"url:%@", url); NSURL *nsUrl = [NSURL URLWithString:url]; NSData *data = [[NSData alloc]initWithContentsOfURL:nsUrl]; UIImage * image = [[UIImage alloc]initWithData:data]; [self performSelectorOnMainThread:@selector(updateUI:) withObject:image waitUntilDone:YES]; } -(void)updateUI:(UIImage*) image{ self.imageView.image = image; }
@interface MoveFileOperation : NSOperation - (id)initWithSrcURL:(NSURL *)srcURL toDestinationURL:(NSURL*)desURL; @end // MoveFileOperation.m @interface MoveFileOperation () @property (retain) NSURL *srcURL; @property (retain) NSURL *desURL; @end @implementation MoveFileOperation @synthesize rootURL, queue; - (id)initWithSrcURL:(NSURL *)srcURL toDestinationURL:(NSURL*)desURL; { self = [super init]; if (self) { self.srcURL = srcURL; self.desURL = desURL; } return self; } - (void)main { if ([self isCancelled]){ return; } NSDirectoryEnumerator *itr =[[NSFileManager defaultManager] enumeratorAtURL:self.srcURL includingPropertiesForKeys:nil options:(NSDirectoryEnumerationSkipsHiddenFiles | NSDirectoryEnumerationSkipsPackageDescendants) errorHandler:nil]; NSError *error = [NSError new]; for (NSURL *url in itr) { if ([self isCancelled]) {// break; }else{ NSString *fileName = [url lastPathComponent]; NSURL *desFileURL = [self.desURL URLByAppendingPathComponent:fileName]; [[NSFileManager defaultManager] copyItemAtURL:url toURL:desFileURL error:&error]; } } }
标签:
原文地址:http://www.cnblogs.com/Jk-Chan/p/5271665.html