Skip navigation.
 
mlRe: Understanding objc_assign_strongCast
FROM : Christopher Nebel
DATE : Thu Feb 07 18:50:38 2008

On Feb 6, 2008, at 5:23 PM, Ben Trumbull wrote:

> objc_assign_strongCast() will issue a write barrier, informing GC 
> that the destination value has changed.  But if the only references 
> to this pointer are in unscanned (not GC) memory, than the GC system 
> will think it's dead as no references to that pointer exist in 
> scanned (GC live) memory.
>
> The C++ new operator allocates from malloc(), just as before. 
> malloc() memory is not GC scanned.  It's probably easiest to instead 
> use CFRetain and balance it with CFRelease in delete/etc.


You could also define a custom "new" operator for the class in 
question that allocates its memory using NSAllocateCollectable(..., 
NSScannedOption), but that might be more trouble than it's worth.


--Chris N.

Related mailsAuthorDate
mlUnderstanding objc_assign_strongCast David Elliott Feb 7, 00:27
mlre: Understanding objc_assign_strongCast Ben Trumbull Feb 7, 02:23
mlRe: Understanding objc_assign_strongCast David Elliott Feb 7, 08:50
mlRe: Understanding objc_assign_strongCast Christopher Nebel Feb 7, 18:50
mlRe: Understanding objc_assign_strongCast David Elliott Feb 7, 21:07
mlRe: Understanding objc_assign_strongCast Ben Trumbull Feb 8, 10:01