UITableView cellForRowAtIndexPath called more than once for each row
The method is called when the cell appears, so whenever a cell appears, the method is called. Also, the cells are reused. So even if the method for a particular cell is called once, it maybe called for another time when this cell disappears and then appears again.
Highly probable that you are calling from other methods :
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
self.tableView from outside of - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
will call cellForRowAtIndexPath twice.