美文网首页
(七)iOS开发之多线程—多线程之间通信

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

作者: 笃Boy | 来源:发表于2017-10-19 17:06 被阅读20次

    一.线程间通信

    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 (转)

    相关文章

      网友评论

          本文标题:(七)iOS开发之多线程—多线程之间通信

          本文链接:https://www.haomeiwen.com/subject/nvqpuxtx.html