我有圖像在coredata,我試圖加載懶惰的表視圖。每個單元使用相關核心數據實體的觀察者在圖像變得可用時更新圖像。在實體相關的代碼如下:使用dispatch_async與核心數據時使用dispatch_async
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// The heavy lifting seems to be during firing of the fault and accessing data,
// so i'm trying to do that in the background thread.
UIImage *i = [UIImage imageWithData:self.imageEntity.data];
// I now need to notify observers that the image is ready on the main thread
dispatch_async(dispatch_get_main_queue(), ^{
[self willChangeValueForKey:@"image"];
image = i;
[self didChangeValueForKey:@"image"];
});
});
該項目採用ARC,我沒有得到任何編譯器錯誤或警告,當我運行它那種工作,直到我滾動快,然後我得到當我宣佈i時,線上有一個EXC_BAD_ACCESS。
缺少什麼我在這裏?
你用'NSZombieEnabled'試過了嗎? – zoul 2012-02-23 06:20:40
如果您不使用dispatch_async,會發生什麼情況?只是在主線上運行 – 2012-02-23 06:31:17
NSZombie對我來說沒有任何額外的光線。如果我不dispatch_async它會阻止主線程和滾動真的很差。 – dizy 2012-02-23 06:35:51