空drawRect实现导致内存警告
我有一个UIView,我用手指画了一个UIBezierPath。 当我重新缩放视图时(例如在绘制路径之后),会触发重绘function,重新调整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。 但是,如果要inheritance其他视图类,则应在实现中的某个时刻调用super。
如果你是UIView的子类,你应该没事,但为了以防万一,可能值得检查一下。