2017-07-18 10 views
0

私はスウィフトに次のコードブロックを単一UIImageUIImageの配列を描く支援する機能を書いた:それはUIImageの数が少ないためにいい作品多くのUIImageを描画するときにCGContextのメモリ消費を最適化する方法は?

UIGraphicsBeginImageContextWithOptions(size, false, 0.0) 
let context = UIGraphicsGetCurrentContext() 

for index in 0..<numPrintsPerTemplate { 

    // .... update x,y positions for the image ... 

    let image = images[index] 
    let imageRect = CGRect(x: x, y: y, width: imageWidth, height: imageHeight) 
    image.draw(in: imageRect, blendMode: .normal, alpha: 1) 

} 

let template = UIGraphicsGetImageFromCurrentImageContext() 
UIGraphicsEndImageContext() 
return template 

が、高いメモリ消費に起因するクラッシュ保ちます。私はこのコードブロックをautoreleasepool {}にラップしようとしましたが、成功しませんでした。私が試したもう1つの試みは、for-loopの中にautoreleasepool {}を置くことでしたが、まだ運がありません。

誰もがこの問題に直面しましたか?私は明白な何かを見逃したか?

答えて

0

UIGraphicsBeginImageContextWithOptions(size, false, 0.0)UIGraphicsEndImageContext()のコールをforループに入れてみてください。それはセッション内のデータ処理量を制限します。つまり、1つのコンテキストで1つの画像しか処理されません。

関連する問題