On 6/2/09 10:17 PM, Michael Ash said:

>>>The description of [NSString UTF8String] says
>>>that "the returned C string is automatically freed just as a returned
>>>object would be released", which implies (to me) that the returned
>>>pointer is to GC-controlled memory.
>>
>> Then shouldn't its return value be __strong?  (It's not.)
>
>Not really. __strong has no meaning when applied to function/method
>return values (or arguments or local variables). It doesn't break
>anything, but it also doesn't do anything. __strong only changes how
>things work when applied to heap memory, such as instance variables,
>or structs that you've malloced memory for.

I see.

>It would be sensible to use __strong as a decorator for non-object
>pointer return values to indicate that they are GC-allocated memory,
>purely out of convention, but as far as I know such a convention is
>not established in the API as of 10.5.

NSAllocateCollectable() for example returns "void *__strong"; UTF8String
and fileSystemRepresentation (and others) do not.  This discrepancy is
either  a) an indication that the returned memory may not be GC-
controlled  b) an error in the declarations.  I don't know for sure.

The docs sure could use some love in this area.

--
____________________________________________________________
Sean McBride, B. Eng                 [email protected]
Rogue Research                        www.rogue-research.com
Mac Software Developer              Montréal, Québec, Canada


_______________________________________________

Cocoa-dev mailing list ([email protected])

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to