大きな UIImage をコンテンツとしてアプリケーションで複数の 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 を使用しているため、リリースを使用できません。ここで何が間違っていますか?
ありがとう。