On Sep 29, 2010, at 16:02, Trygve Inda <cocoa...@xericdesign.com> wrote:

There is example code here (2nd example) that removes before setting too.

http://stackoverflow.com/questions/1024938/renaming-keys-in-nsmutabledictionary

That 2nd example shouldn't be followed. Either retain the value obtained from the dictionary before removing the key, or store the value using the new key before removing the old key.


On 2010.09.29, at 1:07 AM, Roland King wrote:

There's nothing odd about it. It's simple memory management rules. The moment you remove the object from the dictionary the dictionary is no longer an owner and since you've not retained it, neither are you. If nobody else is, it's subject to dealloc as soon as the dictionary releases it If it so happens it is on an outer autorelease pool on PPC that's just lucky.

I think there is a warning about this in the documentation too.

Yes, see:

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ MemoryMgmt/Articles/mmObjectOwnership.html%23//apple_ref/doc/uid/ 20000043-1000922

When an object is removed from one of the fundamental collection classes, it is sent a release (rather thanautorelease) message. If the collection was the only owner of the removed object, the removed object (heisenObjectin the example ) is then immediately deallocated.


~Martin

_______________________________________________

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

Reply via email to