我有一個UITableView,我用CoreData填充數據。我有一個數據訪問類,我調用一個方法來獲取數組數組來填充表。在該方法中我有這樣的事情:NSManagedObjectContext executeFetchRequest返回的數組包含不堅持的對象
NSArray *fetchedArray = [context executeFetchRequest:request error:&error];
我只是直接返回該陣列,但在我的視圖控制器得到了一個錯誤,當我嘗試設置保存返回數組的本地地產
@property (nonatomic, retain) NSArray *listData;
和
@synthesize listData; // <-- error here -[CFNumber release]: message sent to deallocated instance...
分別。
似乎我的@property中的'retain'試圖釋放之前似乎已經發布的listData
數組(或者,更可能是數組中的一個對象或其中一個屬性已被釋放) 。
所以在我的數據訪問類,我添加了fetchedArray
由上下文後產生如下:
NSMutableArray *listArray = [[[NSMutableArray alloc] init] autorelease];
for (Response *item in fetchedArray) {
[listArray addObject:item];
}
return listArray;
但我仍然在@synthesize listData
得到同樣的錯誤早在視圖控制器。它通常不是第一次發生,但是在敲擊細節控制器之後,返回到列表中,然後重新加載具有不同數據的列表(例如,基於用戶輸入的過濾,其調用數據訪問方法以返回更新列表 - 因此在設置中的錯誤listData
)。
我不完全確定,如果我的問題是內存管理相關或與我不瞭解上下文返回的東西有關。如果提取請求返回的數據在我認爲已保留的情況下沒有獲得發佈,那將會很不錯。 :(
編輯注意,給出的答案,問題的標題可能有點誤導