Данные основного графика в реальном времени для перерисовки графика

У меня 4 просмотра хостинга на 1 self.view

self.hostView.frame = CGRectMake(0.0, 0.0, 512.0, 352.0);
self.hostView2.frame = CGRectMake(512.0, 0.0, 512.0, 352.0);
self.hostView3.frame = CGRectMake(0.0, 352.0, 512.0, 352.0);
self.hostView4.frame = CGRectMake(512.0, 352.0, 512.0, 352.0);

На hostingView делаю сюжет. у меня есть 4 массива с некоторыми данными.

self.arr1 = [NSMutableArray arrayWithObjects:
                [NSDecimalNumber numberWithFloat:36.23],
                [NSDecimalNumber numberWithFloat:38.44],
                nil];
self.arr2 = [NSMutableArray arrayWithObjects:
                [NSDecimalNumber numberWithFloat:36.23],
                [NSDecimalNumber numberWithFloat:38.44],
                nil];
self.arr3 = [NSMutableArray arrayWithObjects:
                [NSDecimalNumber numberWithFloat:36.23],
                [NSDecimalNumber numberWithFloat:38.44],
                nil];
self.arr4 = [NSMutableArray arrayWithObjects:
                [NSDecimalNumber numberWithFloat:36.23],
                [NSDecimalNumber numberWithFloat:38.44],
                nil];

Я использую таймер, который вызывает генератор методов

[NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(generator) userInfo:nil repeats:YES];

-(void)generator
{
    [self.bd1 removeObjectAtIndex:0];
    NSInteger count=arc4random()%30;
    [self.bd1 addObject:[NSNumber numberWithInteger:(20+count)]];
    [graph reloadData];

    [self.bd2 removeObjectAtIndex:0];

    [self.bd2 addObject:[NSNumber numberWithInteger:(20+count)]];
    [graph2 reloadData];

    [self.bd3 removeObjectAtIndex:0];

    [self.bd3 addObject:[NSNumber numberWithInteger:(20+count)]];
    [graph3 reloadData];

    [self.bd4 removeObjectAtIndex:0];

    [self.bd4 addObject:[NSNumber numberWithInteger:(20+count)]];
    [graph4 reloadData];
}

Работает 38 секунд и потом зависает. Что я могу сделать, чтобы он работал нормально. Мне нужно перезагрузить данные для создания в реальном времени

Есть идеи?


person user2398911    schedule 26.05.2013    source источник


Ответы (1)


См. демонстрацию «План в реальном времени» в примере приложения Галерея графиков для одного из подходов. Вместо того, чтобы загружать все данные графика и метки при каждом обновлении, скажите графикам обновлять только те точки, которые изменяются. Используйте -insertDataAtIndex:numberOfRecords:, чтобы вставить новые точки данных, и -deleteDataInIndexRange:, чтобы удалить все старые данные, которые вам больше не нужны.

person Eric Skroch    schedule 26.05.2013