我正在將我的項目轉換爲ARC,當我到達一些NSOperation
子類負責在後臺下載一些圖像時,代碼開始崩潰。NSManagedObject在NSOperation(ARC)上崩潰
所以,我有我的NSOperation
子類,其主要代碼:
- (void)main
{
Post *p = [[Post alloc] initWithNewManagedObjectContext];
Post *post = (Post *)[p findById:postId];
[post downloadAndProcessImageOfTypeThumbOrAll:thumbOrAll];
if (![self isCancelled]) {
[target performSelectorOnMainThread:afterCompletionAction withObject:postId waitUntilDone:NO];
}
}
時沒有ARC(以及適當的版本)編譯的代碼工作,但是當它轉化爲ARC收到的EXC_BAD_ACCESS在完成主要方法後異常。
我想這是與ARC發佈任何對象之前它應該,也許是帖子對象有關的東西。但我不知道如何長時間保留它們。
此外,[[Post alloc] initWithNewManagedObjectContext];
創建或重新使用現有上下文從CoreData訪問對象。
任何提示?
運行文書'NSZombiesEnabled'。這對這類問題有很大的幫助。 – borrrden 2013-02-26 01:13:42
什麼是目標?你是否保持強烈的參考?如果你沒有強引用,它會立即釋放,在'performSelectorOnMainThread:'可以運行之前......這意味着你將發送一個消息給一個釋放對象。 – nielsbot 2013-02-26 02:24:46
'post'也將被釋放,除非你在其他地方有一個引用。 – nielsbot 2013-02-26 02:25:38