On Wed, May 20, 2009 at 7:30 PM, Greg Parker <gpar...@apple.com> wrote: > On May 20, 2009, at 4:11 PM, Michael Ash wrote: >> >> On Wed, May 20, 2009 at 4:35 PM, Greg Parker <gpar...@apple.com> wrote: >>> >>> It's also much harder under GC. The "obvious" solutions either leak >>> (because the global table keeps stuff alive), or are thread-unsafe (because >>> no amount of locks can save your dangling pointer if the collector decides >>> to delete the object). >> >> Is there something wrong with using a [NSMapTable >> mapTableWithWeakToStrongObjects] in that environment, with appropriate >> synchronization, or do you just consider that to be non-obvious? > > It's much improved over the traditional "CFDictionary with non-retaining > callbacks" scheme, but is still vulnerable to uncollectable cycles under GC, > if I remember correctly. If a table-value can eventually point back to its > table-key, then the objects will never be reclaimed because of the table's > own strong reference to the table-value.
That would indeed cause trouble. I hadn't thought of that. That means that it's fine if you're storing relatively simple auxiliary data but it's not appropriate for arbitrary objects. Thanks for the info. Mike _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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 arch...@mail-archive.com