title: UICollectionView performBatchUpdates: asserts unexpectedly if view needs layout?
body: <p>If I call <code>-[UICollectionView performBatchUpdates:]</code> from inside <code>viewWillAppear:</code>, inside <code>viewDidAppear:</code>, between these methods, or anytime the collection view has not been laid out by the greater UIView view hierarchy, the collection view will assert with:</p>
  
  <blockquote>
    <p>*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
        reason: 'Invalid update: invalid number of sections.  The number of sections 
        contained in the collection view after the update (X) must be equal to the number 
        of sections contained in the collection view before the update (X), plus or minus 
        the number of sections inserted or deleted (X inserted, 0 deleted).'</p>
  </blockquote>
  
  <p>Where "X" is whatever number of items I've inserted.  I've confirmed that the data source is being updated properly and the index paths in the update are correct.</p>
  
  <p>How could the collection view state become consistent with the data source, when the data source was just updated immediately before calling <code>performBatchUpdates:</code>?  It seems something is unexpectedly triggering a reloadData.</p>