Int 值不打印?

Int Value does not print?

我使用和

创建了两个线程
static int counter (global variable) ;
-(void)ViewDidLoad {
    [NSThread detachNewThreadSelector:@selector(handleTread:) toTarget:self withObject:nil];
    [NSThread detachNewThreadSelector:@selector(handleTread:) toTarget:self withObject:nil];
}

选择器方法是

-(void)handleTread:(NSThread*)sender {
    counter =0; // Position-1
    while (counter<9) {
        counter =0; // Position-2
        counter++;
    }
    NSLog(@"Counter=%d",counter);
}

因此,如果我在 Position-1 使用计数器,它会将结果打印为 counter=9。但是我把它放在 Position-2 它不打印? 我已经更新了问题。

如果你在 while 循环中设置你的计数器,它会导致一个无限循环,你的 NSLog 将永远无法访问。将你的计数器保持在位置 1。

您的代码中有 2 个严重错误:

  1. 您有两个执行线程操作同一个全局变量。一个线程将践踏另一个线程使用的变量。例如,线程 #1 可能能够将 counter 变为 1,然后线程 #2 将再次将其重置为 0。确切的行为未定义。

  2. 你有一个无限循环(你在 while 语句中分配 counter = 0),即使代码在单个线程中执行它也永远不会完成。

从根本上说,您的代码已损坏,我不确定我能说得更多。