• 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: menu madness with retain count
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: menu madness with retain count


  • Subject: Re: menu madness with retain count
  • From: Charles Srstka <email@hidden>
  • Date: Tue, 27 Apr 2010 19:09:29 -0500

On Apr 27, 2010, at 3:49 PM, Bill Appleton wrote:

> if i add a submenu to an item then it is retained by the menu
>
> but then if i then set that submenu to nil is it still retained?
>
> if retained count was accurate you could test it on final release, etc


Well, the direct answer is no, since -[NSMenuItem setSubmenu:] is just an accessor method, most of which in Cocoa look something like this:

- (void)setSubmenu:(NSMenu *)submenu {
	if(someIvar != submenu) {
		[someIvar release];
		someIvar = [submenu retain];

		// maybe do some other stuff
	}
}

As you can see, passing nil to a setter in a Cocoa object typically causes the existing ivar to be released, before the new one is set to nil. There are, of course, variations on this - the method could use -autorelease instead of -release, it could use -copy instead of -retain, it could simply be a @synthesized setter in Mac OS X 10.5 and higher, etc. But the one thing that is certain is that you don’t have to worry about this sort of thing. If NSMenuItem was the object that retained the submenu, then NSMenuItem is the object that has responsibility for releasing it, not you. Once you pass the menu to NSMenuItem, you can be sure that NSMenuItem will do the right thing with it, and the only way you need to worry about it being released is if *you* are retaining it. If NSMenuItem were failing to release the submenu, that would be a bug in NSMenuItem, and not your problem. At this stage in Cocoa’s maturity, such a bug in such a basic class would be quite unlikely, but even assuming such a bug did exist, if you attempted to “fix” the bug by releasing the submenu yourself, then your app would crash as soon as Apple fixed the bug with a software update.

Charles_______________________________________________

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

References: 
 >menu madness with retain count (From: Bill Appleton <email@hidden>)
 >Re: menu madness with retain count (From: Graham Cox <email@hidden>)
 >Re: menu madness with retain count (From: Bill Appleton <email@hidden>)
 >Re: menu madness with retain count (From: Jens Alfke <email@hidden>)
 >Re: menu madness with retain count (From: vincent habchi <email@hidden>)
 >Re: menu madness with retain count (From: Scott Ribe <email@hidden>)
 >Re: menu madness with retain count (From: vincent habchi <email@hidden>)
 >Re: menu madness with retain count (From: Steve Bird <email@hidden>)
 >Re: menu madness with retain count (From: Bill Appleton <email@hidden>)

  • Prev by Date: Re: Fastest way to check for descendants of an object
  • Next by Date: Finder file label from cocoa?
  • Previous by thread: Re: menu madness with retain count
  • Next by thread: Re: menu madness with retain count
  • Index(es):
    • Date
    • Thread