2013-02-07 62 views
0

我有一个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被调用超过它应该是?

回答