Трассировка стека выглядит так, как будто UITableView занят созданием видимых ячеек при возникновении исключения.Поскольку положение ячейки, по-видимому, установлено в значение NaN
, нужно спросить, как это может произойти.
Если предположить, что в коде макета UITableView нет ошибки, единственный способ это сделать - этовнедрите tableView:heightForRowAtIndexPath:
в свой делегат табличного представления и верните неверную высоту (или один из соответствующих методов верхнего или нижнего колонтитула).
Отредактируйте , чтобы точно указать причину исключения:
Я предполагаю, что вы вычислили высоту ячейки по геометрическому размеру строки (используя UIStringDrawing
's -[NSString sizeWithFont:]
).Когда вы отправляете сообщение со значением nil, возвращаемое значение обычно равно nil, 0, NO или какому-либо значению, представленному словом все биты с нулем.
Для метода, который возвращает структуру (какsizeWithFont:
) это не так.Возвращенная структура вообще не инициализируется и содержит случайные значения для ее элементов.
В вашем случае вы, вероятно, использовали один из неинициализированных элементов структуры CGSize, который позже оказался не действительным IEEE 754значение с плавающей запятой.
Приложение: Начиная с clang 3.0, структуры, возвращаемые из сообщений, инициализируются в {0} (все биты равны нулю).Так что вышеупомянутой проблемы больше не должно быть.