My understanding is that under ARC local variables should be cleared (set to 0). However, I have a simple situation where when using a __block modifier the local variable isn’t getting cleared.
Here is some a simple unit test that shows the problem.
- (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" );
}
I was trying to do this as part of a larger unit test that needed the __block variable. I paired it down to this very simple example.
Should I expect ARC to clear the __block variable in this case?

My understanding is that ARC will automatically initialize stack local variables iff they are pointers to retainable objects and they have strong, weak, or autoreleasing qualification.
So all other locals, including primitives like what you have here, are going be uninitialized like always.