我正在使用以下代码异步下载图像并将其设置为图像视图。块和内存泄漏
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