我正在试图找出这两者之间的区别。
这是否意味着currentQueue
不能mainQueue
或者这是一个错误的假设?
答案 0 :(得分:2)
currentQueue
会返回mainQueue
。
new
是具有新线程的新队列
答案 1 :(得分:2)
new
是初始化方法,NSOperationQueue
继承自NSObject
文档说:
此方法是
alloc
和init
的组合。与alloc
类似,它初始化新对象的isa实例变量,因此它指向类数据结构。然后它调用init方法来完成初始化过程。
这意味着调用+new
会创建NSOperationQueue
currentQueue
返回调用该方法的队列。
NSOperationQueue
的{{1}}文档说:
启动操作的操作队列,如果无法确定队列,则为nil
即。如果调用currentQueue
的方法为+currentQueue
,则可以返回mainQueue
答案 2 :(得分:1)
@ Cy-4AH写的概念证明。跳这可以澄清一点。
-(void) viewDidLoad {
NSBlockOperation *blockOperation = [NSBlockOperation blockOperationWithBlock:^(void){
//this block will executed in a separate thread (not the main thread)
if ([NSOperationQueue currentQueue] == [NSOperationQueue mainQueue]) {
NSLog(@"= in block");
} else {
NSLog(@"not = in block"); //This will be log
}
}];
NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init];
[operationQueue addOperation:blockOperation];
//this block will executed in the main thread
if ([NSOperationQueue currentQueue] == [NSOperationQueue mainQueue]) {
NSLog(@"= outside of block"); //This will be log
} else {
NSLog(@"not = outside of block");
}
}