为什么设置类变量NSArray要求我使用访问器方法?

时间:2011-02-07 17:08:22

标签: ios nsfetchrequest

我正在使用NSFetchRequest根据存储在Core Data中的对象在UITableView中创建一个部分。

在viewDidLoad中,我执行获取请求并将返回的NSManagedObjects数组设置为类变量NSArray * allEvents。我正在设置从获取请求返回的数组,如下所示:

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

我稍后尝试在我的numberOfRowsInSection中调用[allEvents count]时收到EXEC_BAD_ACCESS错误。

我设法通过在上面的代码行中添加self来设置来自获取请求的数组来解决问题:

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

任何人都可以解释为什么这有效吗?我遇到了类似的情况,很想知道发生了什么。

感谢。

1 个答案:

答案 0 :(得分:2)

对象上的“allEvents”属性很可能是一个retain属性,因此在第一个场景中,数组不会被保留,并且在您访问它时已被释放。