【发布时间】:2012-10-26 12:18:48
【问题描述】:
我的 UIView 结构:
我有一个"master" UIView(实际上是UIScrollView,但它只是为了按分页滚动)。
作为"master" 的子视图,我有我的"pageView"(UIScrollView 的子类)。这个UIScrollView 可以有任何内容(例如 UIImageView)。
"master" 有另一个子视图:PaintView(UIView 的子类)。通过这个视图,我跟踪手指的运动并绘制它。
结构如下:
[master.view addSubview: pageView];
[master.view addSubview: paintView];
我知道用户何时放大(pageView 对此负责)和委托/方法调用我根据缩放更改在缩放操作期间更改paintView 的框架。
缩放后(scrollViewDidEndZooming:withView:atScale)调用paintView的自定义重绘方法。
重绘方法和drawRect:
-(void)redrawForScale:(float)scale {
for (UIBezierPath *path in _pathArray) {
//TransformMakeScale...
}
[self setNeedsDisplay];
}
-(void)drawRect:(CGRect)rect {
for (UIBezierPath *path in _pathArray) {
[path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];
}
}
问题: 当我放大时,我收到内存警告并且应用程序崩溃。
在分配分析器中,我可以看到应用程序拥有大量内存,但我不明白为什么。
当我在 'redrawForScale' 方法之后不调用 'setNeedDisplay' 时,应用程序不会崩溃。
当我在 drawRect 中记录矩形时,我看到如下值:{{0, 0.299316}, {4688, 6630}}。
【问题讨论】: