Re: Accessing buffers in NSData/NSMutableData under garbage collection
Re: Accessing buffers in NSData/NSMutableData under garbage collection
- Subject: Re: Accessing buffers in NSData/NSMutableData under garbage collection
- From: Alastair Houghton <email@hidden>
- Date: Tue, 19 Feb 2008 19:28:33 +0000
On 19 Feb 2008, at 19:03, Michael Ash wrote:
On Feb 19, 2008 1:36 PM, Quincey Morris
<email@hidden> 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.
...and globals...
Anyway, the point is not to read too much into __strong or __weak.
They do what the documentation says, no more, no less. It isn't a
good idea to invent all sorts of theories on the basis of "__strong
types" etcetera, because that isn't (presently) how things work.
There's nothing wrong with pointer arithmetic on pointers returned by
NSAllocateCollectable(), it's just that you have to be careful not to
dispose of the pointer to the start of the block before you're done
with it. Sadly, right now, that requires an awareness of what the
optimiser might do to your code.
Kind regards,
Alastair.
--
http://alastairs-place.net
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden