FROM : Michael Ash
DATE : Tue Feb 19 20:03:41 2008
On Feb 19, 2008 1:36 PM, Quincey Morris <<email_removed>> wrote:
> Furthermore, your example made me wonder if there's another
> optimization hole, that has nothing to do with interior pointers, but
> which also reflects a variable lifetime indeterminacy:
>
> __weak NSString* string1 = [@"string1" copy];
> NSString* string2 = @"string2";
> [[NSGarbageCollector defaultCollector] collectExhaustively];
>
> Couldn't this result in the garbage collector zeroing 'string2' under
> unlucky (but common) optimization conditions?
All local variables (variables stored on the stack and in registers)
are strong. Even the ones marked __weak. __weak (and __strong) only
apply for variables stored on the heap.
Mike
DATE : Tue Feb 19 20:03:41 2008
On Feb 19, 2008 1:36 PM, Quincey Morris <<email_removed>> wrote:
> Furthermore, your example made me wonder if there's another
> optimization hole, that has nothing to do with interior pointers, but
> which also reflects a variable lifetime indeterminacy:
>
> __weak NSString* string1 = [@"string1" copy];
> NSString* string2 = @"string2";
> [[NSGarbageCollector defaultCollector] collectExhaustively];
>
> Couldn't this result in the garbage collector zeroing 'string2' under
> unlucky (but common) optimization conditions?
All local variables (variables stored on the stack and in registers)
are strong. Even the ones marked __weak. __weak (and __strong) only
apply for variables stored on the heap.
Mike






Cocoa mail archive

