コンテンツとして大きなUIImageを持つアプリケーションで複数のCALayerを使用しています。残念ながら、私がレイヤーやイメージを必要としないとき - メモリは解放されません。複数のレイヤーを使用しているときに未使用のCALayerメモリを解放できません
私はレイヤーを作成するために使用するコードは次のとおりです。
UIImage *im = [UIImage imageNamed:@"image_1.jpg"];
CALayer * l = [CALayer layer];
[l setBounds:CGRectMake(0, 0, 1024, 768)];
[l setPosition:CGPointMake(512, 384)];
[l setAnchorPoint:CGPointMake(0.5, 0.5)];
[l setHidden:NO];
[l setContents:(id) im.CGImage];
[self.layer addSublayer:l]; // self is a subclass of UIView
[self.tmpArr addObject:l]; // self.tmpArr contains the layers I am using (one in this example)
私は層を解放するために使用し、それが内容のコードは次のとおりです。
CALayer * l = [self.tmpArr objectAtIndex:i];
[l removeFromSuperlayer];
[l setHidden:YES];
[l setContents:nil];
[self.tmpArr removeAllObjects];
私は楽器のメモリプロファイラを使用しています私は、レイヤーを作成するときに実際のメモリが増加するのを見るが、それを解放するときには決して減少しない。 私はARCを使用しているので、私はリリースを使用できません。私はここで何が間違っていますか?
ありがとうございました。
ありがとうございます!最初の選択肢は私のアプリに大きな改善をもたらしました。 – Ulile
こんにちはすべて、私はあなたがCALayerをよりよく理解していると私に気づきます。私はCALayer mallocの問題を投稿しています。もしあなたが見ていたら、私は非常に感謝しています... http://stackoverflow.com/questions/26715727/setneedsdisplay-drawrect-or-calayer-causing-dispatch-彼からの継続割り当て – Niall