iOS多线程编程之NSOperation

NSOperation有两种方法:

1>.NSInvocationOperation:创建一个operation,并用selecter指向执行的代码段

2>.NSBlockOperation:创建一个operation,并将执行的代码放在block块中.

1.NSInvocationOperation多线程方法:

创建方法:

- (void)invocationOperation {
	NSInvocationOperation *operation1 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(run1) object:nil];
	NSOperationQueue *queue = [[NSOperationQueue alloc] init];
	[queue addOperation:operation1];
}

- (void)run1{
	NSLog(@"runing1---%@",[NSThread currentThread]);
}

2.NSBlockOperation多线程方法:

创建方法:

- (void)blockOperation1 {
	NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
		NSLog(@"blockOperation---%@",[NSThread currentThread]);
	}];
	operation.completionBlock = ^{
		NSLog(@"finish!-----");
	};
	NSOperationQueue *queue = [[NSOperationQueue alloc] init];
	[queue addOperation:operation];
}


3.从子线程回到主线程刷新UI方法:

performSelectorOnMainThread: withObject: waitUntilDone:

4.多个operation在queue中的执行顺序是可以设置的.

在添加到queue之前设定operation之间的依赖关系:

[operation2 addDependency:operation1];
operation2依赖于operation1=>2在1的后边执行.此时如果queue中只有2个operation的话不会多创建一个子线程的,进程中只有主线程和operation1的那个子线程.毕竟顺序执行多开一个子线程是浪费的嘛.

5.queue中可以设定同时最多的线程数量

queue.maxConcurrentOperationCount = 3;

--end




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值