viewDidLoad中的代码,会进入主队列吗?
来源:8-1 GCD相关面试问题

精慕门3369597
2021-12-13
请问线程与GCD队列之间是什么关系呢?一般运行的代码会进入GCD的主队列吗?
比如
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"1");
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog(@"2");
});
NSLog(@"3");
}
中,NSLog(@"1");
与NSLog(@"3");
会进入主队列中执行吗?
是因为它们进入了主队列,dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(@"2"); });
这种写法才会卡死吗?
我的猜想是:
1.所有消息传递(方法调用)都会被登记为一个任务加入到主线程中
2.在xcode打断点看到的
就是主队列。
3.com.apple.main-thread应该就是dispatch_get_main_queue()和NSOperation中一样的主队列。
请问我的猜想有几个是正确的呢?
写回答
1回答
-
于海
2021-12-18
ViewDidLoad方法是在主线程执行的,提交到主队列的任务都是在主线程中执行。主线程中的任务是要串行执行的
00
相似问题