title: UITableViewController viewWillAppear
body: <p>I have a view controller that is a subclass of UITableViewController. Here is my viewWillAppear:animated method:</p>
  
  <pre><code>- (void)viewWillAppear:(BOOL)animated
  {  
      [super viewWillAppear:animated]; 
  
      if (fetchedResultsController != nil) {
          [fetchedResultsController release];
          fetchedResultsController = nil;
      }
  
      [self.fetchedResultsController performFetch:nil];
      [self.tableView reloadData];
  }
  </code></pre>
  
  <p>I am getting confused by seeing the fetchedResultsController being accessed when         [super viewWillAppear:animated] is called. Since super is a UITableViewController, and there is no viewWillAppear:animated method for that class, per se, then its superclass viewWillAppear:animated should be called, right? If that's correct, then the UIViewController class should not be accessing UITableViewController delegate methods. But I see that numberOfSectionsInTableView is getting called. I'm not sure why the call to super viewWillAppear:animated would do this.</p>
  
  <p>So before I explicitly run the peformFetch and reloadData, the table is getting populated. At that time, the data it is being populated with is out of date.</p>
  
  <p>Here is the fetchedResultsController code</p>
  
  <pre><code>- (NSFetchedResultsController *) fetchedResultsController {
      if (fetchedResultsController != nil) {
          return fetchedResultsController;
      }
  
      NSFetchRequest *fetchRequest = ...
      NSEntityDescription * entity = ...
  
      [fetchRequest setEntity:entity];
  
      [fetchRequest setFetchBatchSize:10];
  
      NSSortDescriptor *aSortDescriptor = ...
      NSSortDescriptor *bSortDescriptor = ...
  
      NSArray *sortDescriptors = ...
      [fetchRequest setSortDescriptors:sortDescriptors];
  
      NSFetchedResultsController *aFetchedResultsController = ...
  
      aFetchedResultsController.delegate = self;
  
      self.fetchedResultsController = aFetchedResultsController;
  
      [aFetchedResultsController release];
      [fetchRequest release];
      ...        
      [sortDescriptors release];
  
      NSError *error = nil;
  
      if (![fetchedResultsController performFetch:&amp;error]) {
          NSLog(@"Unresolved Error %@, %@", error, [error userInfo]);
          abort();
      } 
  
      return fetchedResultsController;
  
  }
  </code></pre>