Skip navigation.
 
mlRe: retain recursively applied to objects?
FROM : Guy English
DATE : Sun Apr 29 03:04:09 2007

No.

NSArray will retain each object as it is added to the array. It will 
send each object a release message when it ( the NSArray ) is 
deallocated.

Similarly NSObject will not forward retain messages to it's instance 
variables. They are retained once (in the setter) and released either 
when NSObject is deallocated (in your dealloc method) or when a new 
value is set for that ivar:

- (void) setSomeIvar: (NSObject*) object
{
   [object retain]; //  hold onto the new value for our ivar because we 
want to keep it around
   [myIvarObject release]; // get rid of the old value for our ivar
   myIvarObject = object; // assign the new value to the old
}

Later,
Guy

On 28-Apr-07, at 8:58 PM, Todd Heberlein wrote:

> My questions are: (1) When an NSArray object is sent a "retain" 
> message, is that message also sent to all the objects it contains? 
> (2) When a subclass of an NSObject receives a "retain" message, 
> does it forward the message to each instance variable in the object?
>
> As example, suppose there is an EvilCorp, which has an array of 
> showrooms, each showroom has an array of cars, and each car has an 
> array of parts.  When I send the "retain" message to the first 
> array of showrooms, will that "retain" message be propagated all 
> the way down to the car's parts objects?  (pseudo code below is 
> provided just for illustration purposes).
>
> Thanks,
>
> Todd
>
>
>
> @interface EvilCorp : NSObject
> {
>     NSString * boss;
>     NSMutableArray * showrooms;  // a list of showrooms
> }
> ...
> @ end
>
>
>
> @interface Showroom : NSObject
> {
>     NSString * name;
>     NSMutableArray * carList;    // list of cars
> }
> ...
> @end
>
>
>
> @interface Cars : NSObject
> {
>     int    id_number;
>     NSMutableArray * partsList;    // list of parts
> }
> ...
> @end
>
> _______________________________________________
>
> Cocoa-dev mailing list (<email_removed>)
>
> 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/guy.english%
> 40gmail.com
>
> This email sent to guy.<email_removed>

Related mailsAuthorDate
mlretain recursively applied to objects? Todd Heberlein Apr 29, 02:58
mlRe: retain recursively applied to objects? Guy English Apr 29, 03:04