У меня есть UITableView, где numberOfSectionsInTableView и numberOfRowsInSection вызываются дважды, с проблемами области при втором запуске. Если я замаскирую проблему, я получу проблему с областью при первом запуске cellForRowAtIndexPath.
Большинство данных поступает из NSDictionary, который настраивается во время viewDidLoad. У меня также настроен NSArray одновременно. После установки они никогда не изменяются и не освобождаются.
Когда numberOfSectionsInTableView вызывается в первый раз, это нормально. Считает элементы по мере необходимости и т. Д. Затем он сразу вызывается во второй раз (понятия не имею, почему). При втором запуске он не может получить доступ к элементам NSDictionary или NSArray. Сбой даже при попытке NSLog их. Например:
NSLog(@"theMainDictionary %@",theMainDictionary);
обычно приводит к EXC_BAD_ADDRESS, но иногда что-то вроде этого:
theMainDictionary <_UITableViewSeparatorView: 0x4e73680; frame = (0 307; 320 1); opaque = NO; autoresize = W; layer = <CALayer: 0x4e4bf20>>
Опять же, эта же строка работает нормально (запись словаря в порядке ожидания) при первом запуске.
Если я замаскирую проблему, возвращая фиксированный NSInteger, то numberOfRowsInSection делает то же самое. Если я маскирую numberOfRowsInSection, cellForRowAtIndexPath вылетает при первом запуске. Однако та же проблема - не удается получить доступ к theMainDictionary или связанному NSArray.
Я не могу понять, почему они запускаются дважды - нигде нет reloadData. Также я не знаю, почему второй вызов проходит по-другому. Любая помощь с благодарностью.