ARC __block局部变量未清除

时间:2011-11-11 04:39:03

标签: objective-c automatic-ref-counting

我的理解是在ARC下应该清除局部变量(设置为0)。但是,我有一个简单的情况,当使用__block修饰符时,局部变量不会被清除。

这是一个显示问题的简单单元测试。

- (void)testARCLocalVarClear
{
    FLPuzzleManager  *puzzleManager = [[FLPuzzleManager alloc] init];
    __block bool      loadDone;

    NSLog( @"value of loadDone = %d", loadDone );

    STAssertFalse( loadDone, @"ARC should have set loadDone to 0" );
}

我试图将此作为需要__block变量的更大单元测试的一部分。我将它与这个非常简单的例子配对。

在这种情况下,我是否应该期望ARC清除__block变量?

enter image description here

1 个答案:

答案 0 :(得分:2)

我的理解是ARC会自动初始化堆栈局部变量,如果它们是可保留对象的指针它们具有强,弱或自动释放的限定条件。

因此,所有其他本地人,包括像你这里所拥有的原始人一样,都会像往常一样未被初始化。