Nie można zwolnić nieużywanej pamięci CALayer podczas używania wielu warstw

Używam wielu aplikacji CALayer w mojej aplikacji z dużą ilością UIImage jako treści. niestety, gdy nie potrzebuję warstwy ani obrazu - pamięć nie jest uwalniana.

kod, którego używam do tworzenia warstwy to:

<code>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)
</code>

kod, którego używam do zwolnienia warstwy i jej zawartości to:

<code>CALayer * l = [self.tmpArr objectAtIndex:i];
[l removeFromSuperlayer];
[l setHidden:YES];
[l setContents:nil];
[self.tmpArr removeAllObjects];
</code>

kiedy używam profilera pamięci instrumentów, widzę, że prawdziwa pamięć zwiększa się podczas tworzenia warstwy, ale nigdy nie zmniejsza się podczas zwalniania. Nie mogę używać wydania, ponieważ używam ARC. co mam tu robić źle?

Dzięki.

questionAnswers(2)

yourAnswerToTheQuestion