• 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: overt and covert retain-release question (instigated by UIViewController on iPhone)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: overt and covert retain-release question (instigated by UIViewController on iPhone)


  • Subject: Re: overt and covert retain-release question (instigated by UIViewController on iPhone)
  • From: Luke the Hiesterman <email@hidden>
  • Date: Wed, 12 Nov 2008 10:05:45 -0800

Read up on the objective-c 2.0 language and the use of properties, specifically. This should help you understand what's going on here. What happens is that when you set self.view = contentView, the behind the scenes machinery is automatically sending a retain message to the object. This is because the view property of the viewController has the retain option set.

Luke


On Nov 12, 2008, at 10:00 AM, Stuart Malin wrote:

First: sorry if iPhone questions now belong elsewhere, but I am posting here because I want to validate my understanding of retain- release in the Cocoa context. I've just acquired the book "The iPhone Developer's Cookbook" by Erica Sadun. Her first "Hello World" example (listing 1-4, if you have the book) troubles me. This example piques for me several questions regarding proper coding regarding retain-release, as well as a curious question regarding KVO.

In the code, Sadun subclasses the UIViewController class, and in its -loadView method, has the following (partial code):

- (void) loadVew
{
	contentView = [[UIImageView alloc] initWithFrame........];
	...
	self.view = contentView;
	[contentView release];
	...
}

What troubles me is the alloc-init of the contentView, its assignment to a property of the UIViewController class (self.view), and the allocated UIImageView object's immediate release. It seems to me that the allocated instance will be deallocated at some subsequent time, yet the view property (of the UIViewControllerClass) has been set to a reference to that object. If I understand retain-release management correctly, this could lead to a memory exception (I'd expect the the de-allocation to occur long before the application terminates). I could understand releasing the alloc'd object if it there was a method that set the view property (for then we could presume that the setter would retain the passed in object), and that had been called. But here there is only an assignment.

Is the iPhone UIKit substantially different in regard to how this works? Or is my understanding of what happens in the above scenario incorrect? Or is it possible that the view property is KVO observed, and when it is assigned to, some code further retains the new value (and presumedly releases the old). iPhone aside, would the notion I put forth (of observing a value change, and when it did, release a prior value and retain a new value) be considered good or bad programming practice (in the context of Cocoa KVO)? [this is what I mean by "covert" retain-release]

I do have one other hypothesis: this code example works coincidentally because once the contentView is presented on-screen, the app has no other function that would cause the display to change, and hence the object is never again accessed.

_______________________________________________

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


References: 
 >overt and covert retain-release question (instigated by UIViewController on iPhone) (From: Stuart Malin <email@hidden>)

  • Prev by Date: Re: Core Data + Unidirectional Relationships
  • Next by Date: Re: Foundation Tool with GC?
  • Previous by thread: overt and covert retain-release question (instigated by UIViewController on iPhone)
  • Next by thread: Re: overt and covert retain-release question (instigated by UIViewController on iPhone)
  • Index(es):
    • Date
    • Thread