iOS使用NSOperation创建线程
2015-06-24 19:31
417 查看
- (IBAction)nsop1:(id)sender {
//使用NSOperationQueue
可以用depend非常方便的控制线程之间的执行顺序
NSOperationQueue *q=[[NSOperationQueue
alloc]
init];
[q addOperationWithBlock:^{
int x=0;
while (x<20) {
NSLog(@"%@",[NSThread
currentThread]);
[NSThread
sleepForTimeInterval:2];
//多线程间参数传递
[self
performSelector:@selector(showInfo:)
onThread:[NSThread
mainThread] withObject:@"create-queue dispathc-syn"
waitUntilDone:NO];
x++;
}
}];
}
- (IBAction)nsop2:(id)sender {
NSBlockOperation *b1=[[NSBlockOperation
alloc]init];
[b1 addExecutionBlock:^{
NSLog(@"test NSBlockOperation %@",[NSThread
currentThread]);
}];
NSBlockOperation *b2=[NSBlockOperation
blockOperationWithBlock:^{
NSLog(@"test BSBlockOperation blockOperationWithBlock! %@",[NSThread
currentThread]);
}];
NSOperationQueue *q=[[NSOperationQueue
alloc]
init];
[q
addOperation:b1];
[q
addOperation:b2];
}
- (IBAction)nsop3:(id)sender {
NSBlockOperation *b1=[[NSBlockOperation
alloc]init];
[b1 addExecutionBlock:^{
NSLog(@"test NSBlockOperation %@",[NSThread
currentThread]);
}];
NSBlockOperation *b2=[NSBlockOperation
blockOperationWithBlock:^{
NSLog(@"test BSBlockOperation blockOperationWithBlock! %@",[NSThread
currentThread]);
}];
NSOperationQueue *q=[[NSOperationQueue
alloc]
init];
q.maxConcurrentOperationCount=4;
[b1
addDependency:b2];
[q
addOperation:b1];
[q
addOperation:b2];
}
//使用NSOperationQueue
可以用depend非常方便的控制线程之间的执行顺序
NSOperationQueue *q=[[NSOperationQueue
alloc]
init];
[q addOperationWithBlock:^{
int x=0;
while (x<20) {
NSLog(@"%@",[NSThread
currentThread]);
[NSThread
sleepForTimeInterval:2];
//多线程间参数传递
[self
performSelector:@selector(showInfo:)
onThread:[NSThread
mainThread] withObject:@"create-queue dispathc-syn"
waitUntilDone:NO];
x++;
}
}];
}
- (IBAction)nsop2:(id)sender {
NSBlockOperation *b1=[[NSBlockOperation
alloc]init];
[b1 addExecutionBlock:^{
NSLog(@"test NSBlockOperation %@",[NSThread
currentThread]);
}];
NSBlockOperation *b2=[NSBlockOperation
blockOperationWithBlock:^{
NSLog(@"test BSBlockOperation blockOperationWithBlock! %@",[NSThread
currentThread]);
}];
NSOperationQueue *q=[[NSOperationQueue
alloc]
init];
[q
addOperation:b1];
[q
addOperation:b2];
}
- (IBAction)nsop3:(id)sender {
NSBlockOperation *b1=[[NSBlockOperation
alloc]init];
[b1 addExecutionBlock:^{
NSLog(@"test NSBlockOperation %@",[NSThread
currentThread]);
}];
NSBlockOperation *b2=[NSBlockOperation
blockOperationWithBlock:^{
NSLog(@"test BSBlockOperation blockOperationWithBlock! %@",[NSThread
currentThread]);
}];
NSOperationQueue *q=[[NSOperationQueue
alloc]
init];
q.maxConcurrentOperationCount=4;
[b1
addDependency:b2];
[q
addOperation:b1];
[q
addOperation:b2];
}
相关文章推荐
- iOS JS与iOS的函数互调
- iOS GCD三种创建线程的方式
- 【iOS开发系列】单例模式宏(兼容ARC和非ARC)
- iOS-KVC究竟怎么用
- IOS知识点小结
- 为iOS(iPhone)开发环境编译OpenSSL库
- 【iOS开发系列】常用的第三方库
- IOS 开发学习37 的Architecture与iphone版本对应关系
- 【iOS开发系列】多线程开发
- IOS项目之分层MVVM
- iOS NSThread 的三种创建线程的方法 非常简单好用
- IOS--OC--LessonProperty 属性 点语法
- Cordova+ ios 插件开发
- OC基础:属性.点语法.KVC 分类: ios学习 OC 2015-06-24 17:24 61人阅读 评论(0) 收藏
- 【iOS开发】多屏尺的自动适配 AutoLayout (纯代码方式)
- iOS 延时执行(OC)
- iOS中使用.plist文件延迟读取的方法(续)
- iOS 系统地图实现及定位
- iOS学习010
- ios中纯手写代码怎么实现内容的自动布局