title: UITableView reloadSection causes cellForRowAtIndexPath to be called for ALL rows
body: <p>I have an app with a <code>UITableViewController</code>, initially with a single section with a single row (that says "Loading..." in it). It fetches some data from the internet, at which point it makes the following call:</p>
  
  <pre><code>[tableView reloadSections:[NSIndexPath indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
  </code></pre>
  
  <p>This is necessary because after fetching the data, there's now a lot of rows, rather than just the 1 there was initially (so asking the table view for the list of visible cells isn't a possibility, since it just returns the 1 old one)</p>
  
  <p>The trouble is that it's then calling the <code>cellForRowAtIndexPath</code> delegate method for <em>every single row</em>, not just the visible ones. I've verified that by putting some logging into the method. If I switch the line to a simple <code>[tableView reloadData]</code> then it only calls <code>cellForRowAtIndexPath</code> for the first few rows, until the point where you scroll and others come into view. This happens on my iOS4 iPod Touch and also in the iOS5 simulator.</p>
  
  <p>I have about 300 rows and it's making it very slow to load and usually crashes on my iPod Touch.</p>
  
  <p>The reason I'm not just using <code>reloadData</code> is that I want the addition of the new rows to be animated, whereas <code>reloadData</code> just makes them suddenly appear.</p>