Почему установка переменной класса NSArray требует от меня использования метода доступа? - PullRequest
0 голосов
/ 07 февраля 2011

Я использую NSFetchRequest для создания раздела в UITableView на основе объектов, хранящихся в Core Data.

В viewDidLoad я делаю запрос выборки и устанавливаю возвращенный массив NSManagedObjects в переменную класса NSArray* AllEvents.Я устанавливал массив, возвращенный из запроса на выборку, следующим образом:

    allEvents = [context executeFetchRequest:eventFetchRequest error:&error];

Я получал ошибку EXEC_BAD_ACCESS, когда позже попытался вызвать [allEvents count] в моем numberOfRowsInSection.

Мне удалось решить проблему, установив массив из запроса на выборку, добавив self в приведенную выше строку кода:

    self.allEvents = [context executeFetchRequest:eventFetchRequest error:&error];

Кто-нибудь может объяснить, почему это сработало?Я сталкивался с подобными ситуациями и хотел бы знать, что происходит.

Спасибо.

1 Ответ

2 голосов
/ 07 февраля 2011

Скорее всего, свойство "allEvents" в вашем объекте является свойством retain, поэтому в первом сценарии массив не сохраняется и был освобожден к моменту обращения к нему.

...