Ios 空的drawRect实现会导致内存警告

Ios 空的drawRect实现会导致内存警告,ios,drawrect,uibezierpath,Ios,Drawrect,Uibezierpath,我有一个UIView,我用手指在上面画了一条UIBezierPath。 当我重新缩放视图时(比如在绘制路径后),会触发一个重画功能,它会重新缩放BezierPath: - (void)redrawPathsWithScale:(float)scale { [_path applyTransform:CGAffineTransformMakeScale(scale, scale)]; [self setNeedsDisplay]; } setNeedsDisplay导致调用dra

我有一个UIView,我用手指在上面画了一条UIBezierPath。 当我重新缩放视图时(比如在绘制路径后),会触发一个重画功能,它会重新缩放BezierPath:

- (void)redrawPathsWithScale:(float)scale
{
    [_path applyTransform:CGAffineTransformMakeScale(scale, scale)];
    [self setNeedsDisplay];
}
setNeedsDisplay
导致调用
drawRect
。 现在,每当我放大到x6附近的某个绝对比例时,我立即得到一个内存警告,应用程序崩溃

我的
drawRect
方法如下所示:

- (void)drawRect:(CGRect)rect
{   
    [_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];
}

奇怪的是:根本不实现
drawRect
会删除内存警告。实现空的
drawRect
仍然会导致崩溃

添加
[super-drawRect:rect]有什么不同吗

drawRect的Apple文档说明:

如果直接将UIView子类化,则此方法的实现不需要调用super。但是,如果您正在对不同的视图类进行子类化,那么应该在实现的某个时候调用super


如果您正在对UIView进行子类化,您应该很好,但为了以防万一,可能值得检查一下。

Im直接对UIView进行子类化。尽管如此,我还是尝试在drawRect的开头调用super方法。没什么变化,这帮我解决了。我在没有超级drawRect的情况下对UIControl进行子类化。谢谢你有没有试着追踪仪器中的分配,看看到底是什么导致了内存的增长。实际上没有内存增长。这是一个非常奇怪的问题。分配(活动字节)一直保持在8MB左右,直到应用程序崩溃。请看我关于这个问题的另一个问题:我正在做一件类似的事情,我发现调用drawrect的频率可以触发内存警告和崩溃。例如,如果我每0.25秒调用一次drawRect,我的应用程序就会崩溃,但如果我每0.5秒调用一次就可以了。至少可以说是奇怪的行为。你是不是在用定时器重画?