我正在使用以下代碼異步下載圖像並將其設置爲圖像視圖。塊和內存泄漏
dispatch_queue_t callerQueue = dispatch_get_current_queue();
dispatch_queue_t downloadQueue = dispatch_queue_create("com.myapp.processsmagequeue", NULL);
dispatch_async(downloadQueue, ^{
NSData * imageData = [NSData dataWithContentsOfURL:url];
dispatch_async(callerQueue, ^{
self.imageView.image = [UIImage imageWithData:imageData];
[self.imageActivityIndicatorView setHidden:YES];
[self.imageView setHidden:NO];
});
});
dispatch_release(downloadQueue);
我知道塊會自動保留它們引用的所有值,然後釋放它們。但是可以在移動到downloadQueue然後再轉回到callerQueue之間自行釋放?
不,這樣會好的。自我將由downloadQueue保留,然後由callerQueue保留,然後由downloadQueue發佈,然後由callerQueue發佈(最有可能以該順序發佈)。 – borrrden 2013-04-25 04:46:55
我沒有使用ARC。 – 2013-04-25 04:48:20
@eddardstark如果你不使用ARC,那麼你不必擔心這樣的事情。只有當你指示他們這樣做時纔會保留和釋放。 – 2013-04-25 04:49:17