自定义drawRect使用了如此多的内存

时间:2013-10-01 08:59:50

标签: ios objective-c

我创建了一个UIView子类,将其用作矩形视图。 drawRect被覆盖如下:

- (void)drawRect:(CGRect)rect {
    CGFloat radius = 2;
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
    CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
    CGContextSetLineWidth(context, 1);

    CGContextMoveToPoint(context, rect.origin.x, rect.origin.y + radius);
    CGContextAddLineToPoint(context, rect.origin.x, rect.origin.y + rect.size.height - radius);
    CGContextAddArc(context, rect.origin.x + radius, rect.origin.y + rect.size.height - radius, radius, M_PI, M_PI / 2, 1);
    CGContextAddLineToPoint(context, rect.origin.x + rect.size.width - radius, rect.origin.y + rect.size.height);
    CGContextAddArc(context, rect.origin.x + rect.size.width - radius, rect.origin.y + rect.size.height - radius, radius, M_PI / 2, 0.0f, 1);
    CGContextAddLineToPoint(context, rect.origin.x + rect.size.width, rect.origin.y + radius);
    CGContextAddArc(context, rect.origin.x + rect.size.width - radius, rect.origin.y + radius, radius, 0.0f, -M_PI / 2, 1);
    CGContextAddLineToPoint(context, rect.origin.x + radius, rect.origin.y);
    CGContextAddArc(context, rect.origin.x + radius, rect.origin.y + radius, radius, -M_PI / 2, M_PI, 1);

    CGContextDrawPath(context, kCGPathFillStroke);
}

但它占用了大量内存。例如,我可以在VM Tracker中的每个自定义矩形视图中看到10 MB MyRectangleView(CALayer)(在iPad 4屏幕大小的矩形上)。这不仅仅是这个对象,每个drawRect我实现了泄漏并且坐在内存上,即使我删除并释放它们。

是什么原因造成的?我的drawRect实现有什么问题吗?

0 个答案:

没有答案