Ошибка загрузки фотографии в очереди отправки - PullRequest
0 голосов
/ 11 марта 2012

У меня есть этот блок кода, который я использую для загрузки изображения в очередь отправки:

dispatch_async(dispatch_get_global_queue(0, 0), ^
{
    CGImageRef x = self.asset.defaultRepresentation.fullScreenImage;

    dispatch_async(dispatch_get_main_queue(), ^
    {
        [[self imageView] setImage: [UIImage imageWithCGImage: x]];
    });
});

Кажется, что код работает пару раз, пока в итоге я не получу неправильный доступ к этой строке[[self imageView] setImage: [UIImage imageWithCGImage: x]];.Кто-нибудь знает, что может быть причиной этого?

Ответы [ 2 ]

1 голос
/ 11 марта 2012

Попробуйте освободить CGImageRef в его собственной очереди, а не передавать его из одной асинхронной очереди в другую:

dispatch_async(dispatch_get_global_queue(0, 0), ^
{
    CGImageRef x = self.asset.defaultRepresentation.fullScreenImage;
    UIImage *img = [UIImage imageWithCGImage: x];
    CGImageRelease(x);

    dispatch_async(dispatch_get_main_queue(), ^
    {
        [[self imageView] setImage: img];
    });
});

Если этот простой взлом не сработает, тогда пора запустить инструменты и посмотреть, что на самом деле подтекает.

1 голос
/ 11 марта 2012

Используйте

CGImageRef x = CGImageCreateCopy(self.asset.defaultRepresentation.fullScreenImage);

и

CGImageRelease(x) 

после установки этого

...