iOS NSOperation基本使用
来源:互联网 发布:mac lol 编辑:程序博客网 时间:2024/05/01 22:43
//
// ViewController.m
// NSOperaiton 使用Demo
//
// Created by 邹彦军 on 16/7/20.
// Copyright © 2016年邹彦军. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)downloadImage:(id)obj {
NSLog(@"\n当前线程:%@\n传递的对象:%@", [NSThread currentThread], obj);
}
- (void)viewDidLoad {
[superviewDidLoad];
[selfoperationDemo7];
}
- (void)operationDemo1 {
NSInvocationOperation *op = [[NSInvocationOperationalloc]initWithTarget:selfselector:@selector(downloadImage:)object:@"invocation"];
// start方法会在当前线程(当前是主线程)执行 @selector方法
[op start];
}
- (void)operationDemo2 {
// 新队列
NSOperationQueue *queue = [NSOperationQueuenew];
// 操作
NSInvocationOperation *op = [[NSInvocationOperationalloc]initWithTarget:selfselector:@selector(downloadImage:)object:@"invocation"];
// 新队列添加任务会异步执行 downloadImage:方法
[queue addOperation:op];
}
- (void)operationDemo3 {// 添加多个任务
NSOperationQueue *queue = [NSOperationQueuenew];
for (int i =0; i < 10; i++) {
NSInvocationOperation *op = [[NSInvocationOperationalloc]initWithTarget:selfselector:@selector(downloadImage:)object:@(i)];
// 执行效果:会开启多条线程,所有任务没有顺序执行,效果与GCD的并发队列&异步执行效果一样
[queue addOperation:op];
}
}
- (void)operationDemo4 {// 效果和operationDemo2一样
NSOperationQueue *queue = [NSOperationQueuenew];
// 使用block定义操作,代码写在一起方便管理、维护
NSBlockOperation *op = [NSBlockOperationblockOperationWithBlock:^{
[selfdownloadImage:@"invocation"];
}];
[queue addOperation:op];
}
- (void)operationDemo5 {// 效果和operationDemo4一样,写法更简单
NSOperationQueue *queue = [NSOperationQueuenew];
// 更简单的,直接添加Block
[queue addOperationWithBlock:^{
[selfdownloadImage:@"invodation"];
}];
}
- (void)operationDemo6 {// 队列中可以添加任何 NSOperation的子类
NSOperationQueue *queue = [NSOperationQueuenew];
NSBlockOperation *op1 = [NSBlockOperationblockOperationWithBlock:^{
[selfdownloadImage:@"invocation"];
}];
// 添加 NSBlockOperation操作
[queue addOperation:op1];
NSInvocationOperation *op2 = [[NSInvocationOperationalloc] initWithTarget:selfselector:@selector(downloadImage:)object:@"invocation"];
// 添加 NSInvocationOperation操作
[queue addOperation:op2];
}
- (void)operationDemo7 {// 线程间通讯
NSOperationQueue *queue = [NSOperationQueuenew];
[queue addOperationWithBlock:^{// 子线程下载任务
[selfdownloadImage:@"invocation"];
[[NSOperationQueuemainQueue]addOperationWithBlock:^{// 回到主线程更细UI
NSLog(@"回到主线程更新UI");
}];
}];
}
@end
- iOS NSOperation基本使用
- IOS NSThread和NSOperation基本使用
- 70 NSOperation基本使用
- NSOperation的基本使用
- [笔记]iOS开发之多线程GCD和NSOperation基本使用
- iOS 多线程编程<八、NSOperation的基本使用>
- iOS NSOperation高级使用
- NSOperation,NSOperationQueue基本的使用
- 多线程 - 09.NSOperation基本使用
- 多线程:NSOperation 的基本使用
- 多线程:NSOperation 的基本使用
- iOS使用NSOperation创建线程
- iOS多线程NSOperation的使用
- iOS-NSOperation 的使用(总结)
- iOS 多线程中NSOperation使用
- iOS开发多线程-NSOperation基本操作
- iOS多线程 NSOperation和NSOperationQueue的使用
- iOS多线程编程NSOperation的使用
- Spring中 @Autowired标签与 @Resource标签 的区别
- Hadoop HDFS负载均衡
- android的初步学习---拨号器
- 一次不同寻常的DHCP过程
- IntellJ Idea 特性和与Eclipse的区别
- iOS NSOperation基本使用
- Spring的IOC原理
- HDU 4722 Good Numbers(数位DP)
- Android相机实时自动对焦的完美实现
- (莲花绽放)animation
- 堆排序 Heap Sort
- 使用Android Studio导入源码
- 经典分类算法—朴素贝叶斯笔记
- 数据结构学习之路----------线性表顺序存储结构插入和删除节点平均移动次数