• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: NSTreeController and object retain counts
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSTreeController and object retain counts


  • Subject: Re: NSTreeController and object retain counts
  • From: Andy Lee <email@hidden>
  • Date: Mon, 09 Nov 2009 06:58:41 -0500

On Nov 9, 2009, at 6:31 AM, Mads Paulin wrote:
Hi,

Yes my Document class releases the array in its dealloc method and all Node
objects in the array are properly dealloc'ed when deallocing the document.


However, I think the problem is unrelated to the retaining of the array
member of the document class but rather to the retaining of elements added
to the array via NSTreeControllers add:sender and remove:sender class.

Yes, this is how I understood your problem.


Adding a node object through this method creates a node object in the
document array member with a retain count of 2. The remove:sender method
correctly removes the object from the document's array

This is the first thing I was going to suggest checking -- whether the object is actually removed from the array. Since it is...


but only decrements
the node object's retain count to 1 - meaning that the objects are never
dealloc. As I see it, this is a memory leak in NSTreeController as all "my"
external references to the Node objects are lost.

I've never used NSTreeController but something in the doc for add: struck me as odd:


"If the receiver is in object mode newObject is called and the returned object is added to the collection."

Since newObject returns a retained object, if this is the literal sequence of events (call newObject, then add to collection), it sure seems like a memory leak to me. Or arguably not, since the sequence of events is documented, but then it's a serious API inconsistency, since AFAIK NSArrayController doesn't have the same issue.

I do know NSTreeController is a frequently-complained-about class. If this is the issue you're running into, surely someone who's dealt with it more extensively should be able to either confirm the issue or say it's a red herring (in which case it's a documentation bug).

--Andy



Thanks, Mads



Mads Paulin wrote:

#import <Cocoa/Cocoa.h>

@interface MyDocument : NSDocument
{
	NSMutableArray *array;
}

@property (readonly) NSMutableArray* array;

@end

All I changed in the doc impl is
@synthesize array
and
array =[ [NSMutableArray]alloc init]; in the init method.


Does your MyDocument implementation ever release array?  If not, then
what happens to the NSMutableArray and what it contains when
MyDocument is dealloc'ed?  I don't think @synthesize will synthesize
any cleanup for you.

  -- GG
_______________________________________________

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


_______________________________________________

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

_______________________________________________

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


  • Follow-Ups:
    • Re: NSTreeController and object retain counts
      • From: "Mads Paulin" <email@hidden>
References: 
 >Re: NSTreeController and object retain counts (From: Greg Guerin <email@hidden>)
 >Re: NSTreeController and object retain counts (From: "Mads Paulin" <email@hidden>)

  • Prev by Date: Re: beginner question, NSNumber, NSDecimalAsNumber
  • Next by Date: Re: beginner question, NSNumber, NSDecimalAsNumber
  • Previous by thread: Re: NSTreeController and object retain counts
  • Next by thread: Re: NSTreeController and object retain counts
  • Index(es):
    • Date
    • Thread