views:

49

answers:

1

This is from some sample code from a book

// On launch, create a basic window
- (void)applicationDidFinishLaunching:(UIApplication *)application { 
 UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
 UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:[[HelloController alloc] init]];
 [window addSubview:nav.view];
 [window makeKeyAndVisible];
}

But a release is never called for window nor for nav.

  1. Release should be called since alloc was called, right?
  2. If #1 is right, then I would need to store a reference to each of these in an instance variable in order to release them in the dealloc?

Perhaps I'm wrong all around...

+4  A: 

Yes, normally.

However; UIWindow is normally not released, nor is the root navigation controller, as, well, what's the point. They last for the duration of your application.

Also, get a newer book; we use Interface Builder for this stuff now.

Williham Totland
+1 and thank you. Book says 2009, but they get to Interface Builder "later." I don't know if I'm convinced.
Yar