title: EXC_BAD_ACCESS within controllerDidChangeContent: at line tableView.endUpdates()
body: <p>This is my all <code>NSFetchedResultsControllerDelegate</code>:</p>
  
  <pre><code>//MARK: - NSFetchedResultsControllerDelegate
  
  func controllerWillChangeContent(controller: NSFetchedResultsController) {
      self.tableView.beginUpdates()
  }
  
  func controller(controller: NSFetchedResultsController, didChangeObject anObject: AnyObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?) {
  
      switch type {
      case .Insert:
          if let newIndexPath = newIndexPath {
              tableView.insertRowsAtIndexPaths([reversedIndexPathForIndexPath(newIndexPath)], withRowAnimation: .Fade)
          }
      case .Delete:
          if let indexPath = indexPath {
              tableView.deleteRowsAtIndexPaths([reversedIndexPathForIndexPath(indexPath)], withRowAnimation: .Fade)
          }
      case .Update:
          if let indexPath = indexPath {
              if let cell = tableView.cellForRowAtIndexPath(reversedIndexPathForIndexPath(indexPath)) as? WLCommentTableViewCell {
                  updateCell(cell, withIndexPath: indexPath)
              }
          }
      case .Move:
          if let indexPath = indexPath, let newIndexPath = newIndexPath {
              tableView.deleteRowsAtIndexPaths([reversedIndexPathForIndexPath(indexPath)], withRowAnimation: .Fade)
              tableView.insertRowsAtIndexPaths([reversedIndexPathForIndexPath(newIndexPath)], withRowAnimation: .Fade)
          }
      }
  }
  
  func controllerDidChangeContent(controller: NSFetchedResultsController) {
  
      tableView.endUpdates() //Thread 1: EXC_BAD_ACCESS (code=1, address=0x20)
      updateView()
  
      if shouldScrollTableToBottom {
          scrollTableViewToBottom()
      }
  }
  </code></pre>
  
  <p>Sometimes my app crashes at line with <code>tableView.endUpdates()</code>. Why?</p>