Inside UIViewController there is property:
@property(nonatomic, readonly, retain) UINavigationController *navigationController
I am not really sure how is this property used... As the way I see it, if you have navigation controller named navController and type some code like this:
[navController pushViewController:nextController animated:YES];
several things happen. First nextController is pushed on top of stack of navController. Second, navController retains nextController. Third, readonly property of nextController (navigationController) is initialized with navController. That way navController retains nextController, and nextController retains navController. This has as a consequence that if you release navController, it wouldn't be destroyed because it is retained by all UIViewControllers on its stack. The only way to release it is to pop all items from stack and then release it.
Is this how all of this functions, or am i missing something?