Je constate une augmentation importante de l'utilisation de la mémoire (de 39 Mo à 186 Mo sur iPad) avec l'exécution de l'instruction "CGContextFillRect" dans mon code ci-dessous. Y a-t-il quelque chose qui ne va pas ici.Pic de mémoire soudaine avec CGContextFillRect
Mon application finit par tomber en panne. PS: De manière surprenante, le pic de mémoire est visible sur les iPads de 3ème et 4ème génération et non sur les iPad de 2ème génération.
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self setBackgroundColor:[UIColor clearColor]];
}
return self;
}
- (id)initWithFrame:(CGRect)iFrame andHollowCircles:(NSArray *)iCircles {
self = [super initWithFrame:iFrame];
if (self) {
[self setBackgroundColor:[UIColor clearColor]];
self.circleViews = iCircles;
}
return self;
}
- (void)drawHollowPoint:(CGPoint)iHollowPoint withRadius:(NSNumber *)iRadius {
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(currentContext, self.circleRadius.floatValue);
[[UIColor whiteColor] setFill];
CGContextAddArc(currentContext, iHollowPoint.x, iHollowPoint.y, iRadius.floatValue, 0, M_PI * 2, YES);
CGContextFillPath(currentContext);
}
- (void)drawRect:(CGRect)rect {
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextSaveGState(currentContext);
CGRect aRect = [self.superview bounds];
[[UIColor whiteColor]setFill];
CGContextFillRect(currentContext, aRect);
CGContextSaveGState(currentContext);
[[UIColor blackColor]setFill];
CGContextFillRect(currentContext, aRect);
CGContextRestoreGState(currentContext);
for (MyCircleView *circleView in self.circleViews) {
[self drawHollowPoint:circleView.center withRadius:circleView.circleRadius];
}
CGContextTranslateCTM(currentContext, 0, self.bounds.size.height);
CGContextScaleCTM(currentContext, 1.0, -1.0);
CGContextSaveGState(currentContext);
}
Oui Rob. Vous avez raison de dire que je fais plus que ce que j'ai collé plus tôt. J'ai mis mon code exact. Ce que j'essaie de faire, c'est dessiner des cercles creux à mon avis. J'ai essayé avec BezierPaths mais quand les cercles se croisent, il se comporte bizarrement avec la règle de remplissage pair/impair. Pourriez-vous s'il vous plaît m'aider à résoudre ce problème de mémoire avec les appareils de la rétine. – Abhinav