Сбой приложения при numberOfRowsSection

#objective-c #arrays

#objective-c #массивы

Вопрос:

 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
 return [array count];   // <--- Crashes here
}
 

Я не уверен, почему происходит сбой, учитывая, что массив представляет собой простой NSArray.

Комментарии:

1. Где определен массив? Из вашего примера он не определен в рамках метода. Это переменная экземпляра? попробуйте self.array.count , является ли это свойством вашего класса

2. -1 и проголосуйте за закрытие, потому что вы не указали полное сообщение об исключении.

Ответ №1:

Ваш «массив» не должен быть NSArray. Можете ли вы предоставить некоторый контекст для определения того, где определен массив? Используете ли вы ARC?

Простым тестом было бы поместить следующую строку перед этим оператором return:

 NSLog(@"array = %@; array class = %@", array, array.class)
 

Вставьте вывод из этого, и я смогу помочь вам дальше! В настоящее время я предполагаю, что массив освобождается, и в этой памяти есть какое-то другое (или мусорное) свойство. Я не удивлюсь, если вы это увидите array.class был NSNumber…

Комментарии:

1. Теперь он падает в строке NSLog: P Самое печальное, что он работал раньше, и я полностью забыл, что я мог изменить, чтобы все испортить.

2. Это класс __NSArrayI

3. Каковы детали сбоя? Бьюсь об заклад, это EXC_BAD_ACCESS. Ваша переменная «array» недопустима.

4. Он не показывает ошибку, просто показывает (lldb) и прерывает поток.

5. @NOSDuco — Узнайте, как получить информацию об исключении.