我有一個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
被調用超過它應該是?