У меня была эта проблема, когда предполагалось, что:
tableView:heightForHeaderInSection:
вернул NSInteger
, но возвращает CGFloat
...
изменение:
-(NSInteger)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
до
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
исправил мою проблему.
Edit:
В какой-то момент я выяснил, как компьютеры работают ниже уровня C, поэтому я решил поделиться им ... (Я буду использовать имена регистров из x86_64, поскольку я наиболее знаком с ними, ARM будет немного отличаться, но аналогичный)
int f(){
float someFloat=5.0f;
return someFloat;
}
приводит к преобразованию значения someFloat
в целочисленный тип, затем копирует его в определенный регистр: %rax
, затем вызывает инструкцию возврата.
float f(){
float someFloat=5.0f;
return someFloat;
}
приводит к копированию значения someFloat
из его текущего местоположения в определенный регистр: %xmm0
, затем вызывая инструкцию возврата.
Так что, если у вас неправильный прототип, вызывающий код будет ожидать, что значение будет в неправильном месте, в итоге вы действительно вернете значение мусора.