我在研究如何dispatch_async()
的作品。dispatch_group_wait永遠等待
我想這個片段在main()
:
typedef void(^VoidBlock)();
VoidBlock aBlock = ^{
NSLog(@"do work in main queue");
};
dispatch_async(dispatch_get_main_queue(), aBlock);
但塊永遠不會被調用。我想也許主線程在塊運行之前結束。 然後我嘗試這樣的:
dispatch_group_t aGroup = dispatch_group_create();
VoidBlock aBlock = ^{
NSLog(@"do work in main queue");
dispatch_group_leave(aGroup);
};
dispatch_group_enter(aGroup);
dispatch_async(dispatch_get_main_queue(), aBlock);
dispatch_group_wait(aGroup, DISPATCH_TIME_FOREVER);
這不工作,要麼(塊不會被調用)。 區別在於現在主線程(正確)在語句上阻止了dispatch_group_wait(aGroup, DISPATCH_TIME_FOREVER)
問題是什麼?
你的意思是你在'main.m'文件中試過這段代碼嗎? –
是的,當然在'main.m'和裏面'main'功能! – drakon
你在控制檯上查看輸出或使用斷點時嘗試了什麼? –