0

私はディスパッチキュー上の画像をロードするために使用し、ここでのコードブロックを持っている:バグロード写真

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]];。誰がこれを引き起こしているのか知っていますか?

答えて

1

使用

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

CGImageRelease(x) 

あなたが設定した後、その

1

独自のキューに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]; 
    }); 
}); 

単純なハックがうまくいかない場合は、インストゥルメントを起動して実際に漏れているものがあるかどうかを確認します。