Как обновить данные UITableView в objective c?
dequeueReusableCellWithIdentifier - лучше юзайте другой метод - dequeueReusableCellWithIdentifier:indexPath и тогда проверка if (cell == Nil) никогда не вызоветься, ячейка всегда есть и соответственно код можно сократить. Лучше использавать свой класс для ячейки, сабкласс от UITableViewCell, так легче ее настроивать, затем просто вызываете reloadData, и таблица перегружаеться. также поставте в storyboard тип таблицы - динамическая
При добавлении данных в таблицу следует использовать методы beginUpdates и endUpdates. Добавление, как и удаление в таком случае, осуществляется с анимацией. 
Желательно, что бы insertSection соответствовал индексу объекта в массиве. Если добавляется объект в начало массива, то индекс insertSection должен быть равен нулю. [self.tableView beginUpdates];
  
NSIndexSet* insertSection = [NSIndexSet indexSetWithIndex:0];
    
[self.tableView insertSections:insertSection withRowAnimation:UITableViewRowAnimationTop];
    
[self.tableView endUpdates];
Выше код для вставки секции. Что бы вставить ячейку в секцию подходит метод:
- (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;