2013-05-26 3 views
1

У меня есть 4-хостинг вид 1 self.viewCore-сюжет в режиме реального времени данных, для перерисовывать участка

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 секунд, и чем замерзает. Что я могу сделать, чтобы он работал нормально. Мне нужно перезагрузить данные для создания в режиме реального времени

Любые идеи?

ответ

1

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