Насколько я понимаю, в 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 в этом случае?