线程之间的通信总结
来源:互联网 发布:梦幻修仙手机java版 编辑:程序博客网 时间:2024/05/29 15:19
1.GCD线程之间的通信
dispatch_async(dispatch_get_global_queue(0, 0), ^{ NSLog(@"%@", [NSThread currentThread]); // 耗时操作: 放在全局队列,异步执行 // 1. url, 确定一个网络上的资源路径 NSURL *url = [NSURL URLWithString:@"http://fe.topit.me/e/d1/12/1170068721aa112d1el.jpg"]; // 2. 通过url可以下载对应的网络资源, 网络资源传输的都是二进制 NSData *data = [NSData dataWithContentsOfURL:url]; // 3. 二进制转成图片 UIImage *image = [UIImage imageWithData:data]; // 4. 更新UI,在主线程-》 直接把任务添加到主队列,就会在主队列执行 dispatch_async(dispatch_get_main_queue(), ^{ self.iconView.image = image; NSLog(@"-----%@", [NSThread currentThread]); }); });
2.NSThread线程间的通信
#pragma mark- 下载图片- (void)downloadImage{ // 子线程里面的runloop默认不开启, 也就意味不会自动创建自动释放池, 子线程里面autorelease的对象 就会没有池子可放。 也就意味后面没办法进行释放。 造成内存泄露 // 所以需要手动创建 @autoreleasepool { NSLog(@"%@", [NSThread currentThread]); // 1. url, 确定一个网络上的资源路径 NSURL *url = [NSURL URLWithString:@"http://h.hiphotos.baidu.com/image/pic/item/5366d0160924ab1828b7c95336fae6cd7b890b34.jpg"]; // 2. 通过url可以下载对应的网络资源, 网络资源传输的都是二进制 NSData *data = [NSData dataWithContentsOfURL:url]; // 3. 二进制转成图片 UIImage *image = [UIImage imageWithData:data]; // 4. 把图片显示到iconView // self.iconView.image = image; // 在这里需要把数据传到主线程,在主线程更新UI // 1. [self performSelectorOnMainThread:@selector(downloadFinish:) withObject:image waitUntilDone:NO]; //2. [self performSelector:@selector(downloadFinish:) onThread:[NSThread mainThread] withObject:image waitUntilDone:NO]; //3. // [self.iconView performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:YES]; // waitUntilDone:表示是否等待@selector(setImage:) 方法执行完成 // 如果是YES,就等待setImage在其他线程执行结束,再往下执行 NSLog(@"完成!!"); }}
0 0
- 线程之间的通信总结
- 进程之间、线程之间的通信方式总结
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- java线程之间的通信
- 只会做水题-
- IAR 提示 Error[Li005]: no definition for ...的错误 的问题的解决方法
- Oracle job 定时任务
- 一套价值8800元的excel教程
- 第一篇序言
- 线程之间的通信总结
- 优化VMware提高虚拟机运行速度的技巧
- ArrayLiteralConvertible
- 4.1、SSRS-报表服务的配置
- 如何对android进行debug
- Jquery操作checkbox全选、反选失效的问题解决
- java工程中读取properties的工具类PropertiesReader
- 关于 极大似然估计 和 EM算法 最好的博文
- Jump Game II