[英]Why is my graph so choppy?
我已經使用Core Plot創建了一個散點圖。 但是,我的圖需要動態刷新(不斷添加和刪除點)。 我需要使圖流暢,並且看起來像“在圖上滑動”。 相反,我似乎得到了一條斷斷續續的線,該線一次添加多個值,凍結並再次添加多個值。 是什么導致這種行為?
-(void)updateDataWithVal:(double)percentageUsage
{
if ([self.graphData count] >= 10)
{
[self.graphData removeLastObject];
}
[self.graphData insertObject:[NSNumber numberWithDouble:percentageUsage] atIndex: 0];
[self.graph reloadData];
}
上面是我希望圖形更改時調用的函數。 問題不在於要更新的數據。 我調試了該函數,並注意到數據正在流暢地更新(每秒從數據數組中添加和刪除一個點)。 問題在於圖形實際上在變化。 是什么導致圖形凍結並一次(每6-7秒一次)添加幾個點,而不是像數據一樣連續每秒更新一次?
我懷疑這是由於在短時間內增加許多點引起的。 每秒僅刪除和添加一個點。 另外,我的圖只有一個圖。
我的圖形在OSX 而非 iOS上運行。 所有代碼都在Objective-C中。
根據要求,我可以將評論轉換為答案,以便可以將其關閉。
Core Plot圖形非常依賴於顯示元素,因此對它們的任何更新都必須在主線程上執行。 否則,您將看到奇怪的渲染行為,例如更新不一致,視覺偽像,並且您的應用程序很可能在某個時候崩潰。
我必須執行您在我的Mac應用程序之一中描述的相同操作。 為此,我使用后台GCD隊列來處理數據獲取和處理,以避免阻塞主線程。 但是,每次需要將結果插入到圖中並進行更新時,我都會使用dispatch_async()
將適當的代碼包裝在要在主線程上執行的塊中。 這樣可以避免出現如此處所示的怪異現象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.