Re: NSMutableDictionary autorelease chrashes application
Re: NSMutableDictionary autorelease chrashes application
- Subject: Re: NSMutableDictionary autorelease chrashes application
- From: "Shawn Erickson" <email@hidden>
- Date: Fri, 18 Jul 2008 07:49:52 -0700
On Fri, Jul 18, 2008 at 7:42 AM, Shawn Erickson <email@hidden> wrote:
> On Fri, Jul 18, 2008 at 7:34 AM, Matthias Arndt
> <email@hidden> wrote:
>> Robert,
>>
>> Am 18.07.2008 um 16:25 schrieb Robert Martin:
>>
>>> In the next line, you reassign vAttributes to the contents of your iVar
>>> dictionary. Nothing points to that alloc'd dictionary in the first line
>>> anymore.
>>>
>>> Since vAttributes now points to an autoreleased dictionary, attempting to
>>> release it will cause a crash.
>>
>> THAT makes sense, I just didn't realize that "objectForKey" returns an
>> autorelease object! I just removed the first allocation of "vAttributes"
>> what fixes the problem.
>
> This is the wrong thing to take away from this email thread. Please
> review the following and ask questions if you don't understand any
> aspect of it.
>
> <http://developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/Tasks/MemoryManagementRules.html>
>
> ...and review the whole of the document that contains the above...
>
> <http://developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html>
I should more clearly note that objectForKey: is not returning an
"autoreleased" object. Also even if it did it would be an
implementation detail (unless documented in the API docs).
It is returning a reference to an object that the vColors dictionary
has a retained reference to (Cocoa collections retain what you add to
them). At this point in time you have know idea of the lifetime of the
object you get back (it could go away when the vColors dictionary goes
away or it could live longer). If you need something to stay around
outside of the method you are in (assuming no side effects down stream
in that method) then you must retain that object for a long as you
need it.
-Shawn
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden