iOS開發中多線程的使用
原文 http://www.cnblogs.com/jerehedu/p/4343480.html
一、創建多線程的五種方式
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];
}
}</pre>
</div> </div>
本文由用戶 cg2y 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!