title: UINavigationController pushViewController lifecycle
body: <p>I have a two ViewControllers A and B, in between I use UINavigationController's <code>pushViewController</code> function to navigate, for example when press button on A, it navigates to B by executing:</p>
  
  <pre><code>[self.navigationController pushViewController:[[BViewController alloc] init] animated:YES];
  </code></pre>
  
  <p>When press button on B, it navigates to A by the same way.</p>
  
  <p>I think every time I navigate in this way, I am creating a new instance of a view controller without deleting the old one. For example, if I navigate <code>A -&gt; B -&gt; A</code>, there will be two A controllers.</p>
  
  <p>How can I better manage the memory in this case? Is there a recommended pattern to reuse generated view controllers (like singleton view controller?), or how should I properly release the view controller which is not in use?</p>
  
  <p>Thank you</p>