(七)iOS开发之多线程—多线程之间通信

一.线程间通信

1.什么叫做线程间通信

在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信。

2.线程间通信的体现

1个线程传递数据给另1个线程

在1个线程中执行完特定任务后,转到另1个线程继续执行任务

二.线程间通信示例图片下载图解:


三.线程间通信方式

1.NSThread

线程间通信常用方法

- (void)performSelectorOnMainThread:(SEL)aSelectorwithObject:(id)argwaitUntilDone:(BOOL)wait;

- (void)performSelector:(SEL)aSelectoronThread:(NSThread*)thrwithObject:(id)argwaitUntilDone:(BOOL)wait;

Doome:

https://github.com/tangbinbinM/communicationThread.git 

2.GCD

从子线程回到主线程

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{

//图片的网络路径

NSURL*url = [NSURLURLWithString:@"https://car3.autoimg.cn/cardfs/product/g4/M06/88/CC/1024x0_1_q87_autohomecar__wKgH2lYChi6ATzdCAAe3AiAaA8s976.jpg"];

//加载图片

NSData*data = [NSDatadataWithContentsOfURL:url];

//生成图片

UIImage*image = [UIImageimageWithData:data];

//回到主线程

dispatch_async(dispatch_get_main_queue(), ^{

self.imageView.image= image;

});

});

3.NSOperation

[[[NSOperationQueuealloc]init]addOperationWithBlock:^{

//图片的网络路径

NSURL*url = [NSURLURLWithString:@"https://car3.autoimg.cn/cardfs/product/g4/M06/88/CC/1024x0_1_q87_autohomecar__wKgH2lYChi6ATzdCAAe3AiAaA8s976.jpg"];

//加载图片

NSData*data = [NSDatadataWithContentsOfURL:url];

//生成图片

UIImage*image = [UIImageimageWithData:data];

//回到主线程

[[NSOperationQueuemainQueue]addOperationWithBlock:^{

self.imageView.image= image;

}];

}];

4.利用NSPort

http://blog.csdn.net/yxh265/article/details/51483822 (转)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容