我有一个UIView的子类,我在上面画一个图。滚动时石英绘图问题
GraphingView.h
@interface GraphingView : UIView
...
@end
我在这里画的东西:
GraphingView.m
- (void)drawRect:(CGRect)rect
{
...
}
然后,从另一个控制器,我刚好初始化调用这个图并添加该子视图
graphView = [[GraphingView alloc] init];
...
[self.view addSubview:graphView];
但我实际上多次调用这个子视图与UIScrollView在不同的页面。让我们说3页不同的图表。一切工作正常,如果我只需要3个静态图。由于我的滚动条是无限的,每当我向左或向右滑动滚动条时,滚动条都会生成一个更老或更新的图形,它位于方向图的前面或旁边。出于这个原因,我使用scrollViewDidScroll
来检测并插入新图。但是,scrollViewDidScroll
会造成对子视图的调用过多,因为它尚未停止。所以,这意味着我用Quartz 2D重新绘制太多,并导致应用程序崩溃。这听起来是石英的内存泄漏吗?
因此,我决定调用scrollViewDidEndDecelerating
中的图子视图。但经过一段时间的滚动,应用程序崩溃就像上面,因为我仍然调用drawRect方法太多次子视图。
我的问题是,我如何防止这个石英崩溃,因为drawRect
被调用超过它应该是?