1

我今天刚开始使用 GCD,我以为我对它的工作原理有所了解,但现在我有点困惑为什么 NSLog 语句没有在控制台中打印/显示。

基本上,如果我正确理解 GCD,则需要完成几个步骤。

  1. 创建一个新队列
  2. 将块添加到队列

这是我如何在我的一个文件中使用 GCD 的示例,

ViewControllerWelcome.m

 #import <ViewControllerWelcome.h"
 #import <dispatch/dispatch.h> // Grand Central Dispatch

 @interface ViewControllerWelcome ()
 {
 // declare private methods here
 dispatch_queue_t scan_queue;
 }
 @end

 @implementation ViewControllerWelcome

 - (void)viewDidLoad {
   [super viewDidLoad];


 // threading stuff - GCD
scan_queue = dispatch_queue_create("com.chrisrjones.kegcop", NULL);

// put blocks of code into curly braces to run on separate thread
dispatch_async(scan_queue, ^{

    [serial handShake];
    NSLog(@"execution reached here");

 });
}

@end

由于它目前正在运行,我没有在 ^{ 中看到 NSLog 语句的输出

4

2 回答 2

0

可能是您的 [serial handShake];正在阻塞..尝试将日志放在此调用之前

于 2013-01-02T04:36:46.560 回答
0

试试这种方式。

 NSLog(@"execution reached here");
 [serial handShake];

代替

[serial handShake];
NSLog(@"execution reached here");
于 2013-01-02T04:38:52.097 回答