前言
各位同学大家好 ,有断时间没有给大家更新文章 , 具体多久我也不记得啊 今天 主要是分享一下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里面基础就讲完了 主要我是记录基础知识哈
网友评论