美文网首页
ios 基础之多线程

ios 基础之多线程

作者: xq9527 | 来源:发表于2021-02-18 19:38 被阅读0次

    前言

    各位同学大家好 ,有断时间没有给大家更新文章 , 具体多久我也不记得啊 今天 主要是分享一下iOS里面的多线程基础知识 希望能帮助到各位同学学习iOS 基础开发知识 ,那么废话不多说我们正式开始 。

    准备工作

    • iOS

    安装xcode 这个大家可以自己去appstore 搜索下载安装即可
    做过移动端开发同学 都会接触到一个知识那就是多线程 我们app在运行的时候在我们的操作系统当中是一个进程 里面有很多线程 我们的 UI刷新在我们的主线程(也叫UI线程) 但是我们在执行一些耗时操作的时候(例如 网络请求 网络下载 还有一些延时操作到时候)我们如果还是直接在 ui线程直接操作 那么我们的app在运行过程中就会出现明显的掉帧情况

    具体实现

    • 我们没有开启线程的时候 直接加载图片

    效果图:
    具体代码

     UIImage * image=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL 
    
     URLWithString:item.picUrl]]];    self.richtimageview.image=image;
    
    • 开启线程加载图片

    效果图:

     NSThread *  downloadImageThred=  [[NSThread alloc]initWithBlock:^{
     UIImage * image=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL 
            URLWithString:item.picUrl]]];
            self.richtimageview.image=image;
       }];
        downloadImageThred.name=@"downloadImageThred";
        [downloadImageThred start];
    
    • 使用GCD 处理网络图片

        dispatch_queue_global_t  downloadQueue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
        dispatch_queue_main_t mainQueue=dispatch_get_main_queue(); //获取主队列
        dispatch_async(downloadQueue, ^{
            UIImage * image=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:item.picUrl]]];
            dispatch_async(mainQueue, ^{
                self.richtimageview.image=image;
            });
        });
    
    ] image.png

    我们在使用 GCD 的时候 我们在非主线程处理图片下载的过程 然后我们切换回主线程 刷新UI
    到此iOS里面基础就讲完了 主要我是记录基础知识哈

    相关文章

      网友评论

          本文标题:ios 基础之多线程

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