Неожиданный выпуск UITableViewSeparatorView, приводящий к сбою при запуске приложения - PullRequest
0 голосов
/ 14 сентября 2011

Эта критическая ошибка возникает только один раз каждые 10 или около того запусков в симуляторе, поэтому ее очень сложно отладить.Я получал какую-то ошибку malloc, когда мой tableView загружал контент при запуске приложения.Я включил nszombies, и, когда ошибка наконец-то появилась, я получил такой вывод:

objc[71060]: Class _NSZombie__UITableViewSeparatorView is implemented in both ?? and ??. One of the two will be used. Which one is undefined.
2011-09-14 11:01:46.080 My_App[71060:7307] *** -[_UITableViewSeparatorView release]: message sent to deallocated instance 0x4e398e0

Я впервые заметил, что эта ошибка возникает после того, как я добавил этот код в tableView (первый экран, который пользователь видит при запуске приложения)

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath
{
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    return 90;
else
    return 50;
}

Смысл этого кода заключался в (очевидно) определении различных высот строк для таблицы в целевых объектах iPad и iPhone соответственно.

Проблема в этом разделе кода?

Ответы [ 2 ]

1 голос
/ 07 ноября 2012

Лучший способ - изменить код с помощью двух констант. Вы можете просто добавить эти две строки в начале вашего файла .m

#define isAniPad    (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define HEIGHT_ROW (isAniPad ? 90.0 : 50.0)

После этого просто позвоните

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath
{
   return HEIGHT_ROW;
}
1 голос
/ 14 сентября 2011

Ну, это наихудшая ошибка (которая только иногда повторяется). Что ж, лучший совет, который я мог бы дать тебе, - это много рассказать NSLog. Это звучит как бесполезный совет, но чрезмерное использование NSLog действительно помогает мне отладить такого рода ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...