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]
