Uiview 滚动时的石英绘图问题

Uiview 滚动时的石英绘图问题,uiview,uiscrollview,quartz-graphics,drawrect,Uiview,Uiscrollview,Quartz Graphics,Drawrect,我有一个UIView的子类,我在上面画了一个图 图形视图.h @interface GraphingView : UIView ... @end 我在这里画东西: GraphingView.m - (void)drawRect:(CGRect)rect { ... } 然后,从另一个控制器,我通过初始化并添加子视图来调用这个图 graphView = [[GraphingView alloc] init]; ... [self.view addSubview:graphView]; 但实际

我有一个UIView的子类,我在上面画了一个图

图形视图.h

@interface GraphingView : UIView
...
@end
我在这里画东西:

GraphingView.m

- (void)drawRect:(CGRect)rect
{
...
}
然后,从另一个控制器,我通过初始化并添加子视图来调用这个图

graphView = [[GraphingView alloc] init];
...
[self.view addSubview:graphView];
但实际上,我在不同的页面中多次使用UIScrollView调用此子视图。让我们假设3页3个不同的图表。如果我只需要3个静态图,一切都正常。由于我的滚动条是无限的,每次我向左或向右滑动滚动条时,滚动条将生成一个旧的或新的图形,它位于方向图的前面或旁边。因此,我使用
scrollViewDidScroll
检测并插入新图形。但是,
scrollViewDidScroll
对子视图进行了太多调用,因为它尚未停止。所以,这意味着我用Quartz 2D重新绘制了太多内容,这会导致应用程序崩溃。这听起来像是石英的内存泄漏吗

因此,我决定调用
ScrollViewDiEndDecreating
中的graph子视图。但是在滚动一段时间后,应用程序崩溃了,就像上面一样,因为我仍然多次调用了包含drawRect方法的子视图


我的问题是,如何防止石英崩溃,因为
drawRect
被调用的次数超过了它应该被调用的次数?

内存泄漏是由sqlite3造成的,实际上是因为我在每个图形视图中查询数据

对于那些处理内存泄漏的人,我强烈推荐一篇优秀的文章