Hi Mazen,

Yes, objects that are added to collections objects (array, set, dictionary) are 
automatically retained by that collection and not released until removed from 
the collection or the collection is deallocated.  If you don't need them 
"anywhere else outside the dictionary", then you should release them only if 
you own them (ie, you retained, alloc'd, new'd, create'd, etc).

Since you created the dictionary with a convenience method, it is autoreleased 
and you do not need to release it yourself.  It will be released when the 
autorelease pool to which it belongs gets drained.

This document contains everything you need to know:  
http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html
  Additionally, if you have questions about a particular method, the 
documentation for that method will usually indicate how it works on that 
object.  For example, NSMutableDictionary's setObject:forKey: method: 
http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSMutableDictionary_Class/Reference/Reference.html#//apple_ref/doc/uid/20000141-BABBDAFD

HTH!

Dave


On Nov 28, 2009, at 2:19 PM, Mazen M. Abdel-Rahman wrote:

> Hi All,
> 
> I am trying to find out how memory is retained/released when using different 
> Cocoa collection classes.  Is there a good resource on this anyone can 
> connect me to?
> 
> Here is some detailed questions about what I am trying to find out:
> 
> If I create a dictionary in the following manner (where myArray is an 
> NSArray* and authorName is an NSString*)
> 
> NSDictionary * myDict = [NSDictionary dictionaryWithObjectsAndKeys:myArray, 
> @"Titles", authorName, @"Name",nil];
> 
> Does this call automatically increase the retain count of myArray and 
> authorName?  So that I should call release on them if I don't need to have 
> them anywhere else outside the dictionary?  Or will calling release on them 
> mess up the dictionary?
> 
> Also - once I am done with this dictionary -  since I created it using a 
> class method (and not alloc) - am I right in assuming that I should not call 
> release on it?  And if that is the case when does it get released?
> 
> Thanks for your help!
> Mazen Abdel-Rahman
> _______________________________________________
> 
> 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/davedelong%40me.com
> 
> This email sent to [email protected]

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________

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]

Reply via email to