簡體   English   中英

為什么我的圖表如此不連貫?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM