2

我有一个 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仍然会导致崩溃!

4

1 回答 1

1

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

drawRect 的 Apple 文档指出:

如果你直接继承 UIView,你的这个方法的实现不需要调用 super。但是,如果您要对不同的视图类进行子类化,则应在实现中的某个时刻调用 super。

如果你是 UIView 的子类,你应该没问题,但为了以防万一,可能值得检查一下。

于 2012-10-23T10:14:05.340 回答