2013-02-07 68 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被調用超過它應該是?

回答