Skip navigation.
 
mlRe: Accessing buffers in NSData/NSMutableData under garbage collection
FROM : Alastair Houghton
DATE : Tue Feb 19 20:28:33 2008

On 19 Feb 2008, at 19:03, Michael Ash wrote:

> 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.


...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

Related mailsAuthorDate
mlAccessing buffers in NSData/NSMutableData under garbage collection Rick Hoge Feb 18, 23:21
mlRe: Accessing buffers in NSData/NSMutableData under garbage collection Adam P Jenkins Feb 19, 06:00
mlRe: Accessing buffers in NSData/NSMutableData under garbage collection mmalc crawford Feb 19, 06:07
mlRe: Accessing buffers in NSData/NSMutableData under garbage collection Adam P Jenkins Feb 19, 06:19
mlRe: Accessing buffers in NSData/NSMutableData under garbage collection Adam P Jenkins Feb 19, 06:23
mlRe: Accessing buffers in NSData/NSMutableData under garbage collection Chris Suter Feb 19, 07:24
mlRe: Accessing buffers in NSData/NSMutableData under garbage collection Alastair Houghton Feb 19, 12:48
mlRe: Accessing buffers in NSData/NSMutableData under garbage collection Adam P Jenkins Feb 19, 15:26
mlRe: Accessing buffers in NSData/NSMutableData under garbage collection Alastair Houghton Feb 19, 15:46
mlRe: Accessing buffers in NSData/NSMutableData under garbage collection Quincey Morris Feb 19, 19:36
mlRe: Accessing buffers in NSData/NSMutableData under garbage collection Chris Suter Feb 19, 19:38
mlRe: Accessing buffers in NSData/NSMutableData under garbage collection Michael Ash Feb 19, 20:03
mlRe: Accessing buffers in NSData/NSMutableData under garbage collection Alastair Houghton Feb 19, 20:28
mlRe: Accessing buffers in NSData/NSMutableData under garbage collection Quincey Morris Feb 19, 22:12
mlRe: Accessing buffers in NSData/NSMutableData under garbage collection Chris Suter Feb 19, 23:42
mlRe: Accessing buffers in NSData/NSMutableData under garbage collection Quincey Morris Feb 20, 00:35
mlRe: Accessing buffers in NSData/NSMutableData under garbage collection Michael Ash Feb 20, 00:44
mlRe: Accessing buffers in NSData/NSMutableData under garbage collection Chris Suter Feb 20, 00:59