У меня есть 2 NSArray (фактически изменяемые), которые я пытаюсь преобразовать в двойной массив в стиле C для подпрограммы c, в которую я передаю их.
Вот моя процедура Objective-C:
NSMutableDictionary *childDictionary = [myParentDictionary objectForKey:resort_code];
latitudeArray = [childDictionary objectForKey:@"lat"];
longitudeArray = [childDictionary objectForKey:@"lon"];
int nvert = [latitudeArray count];
double laArray[nvert];
double loArray[nvert];
for(int i=0; i<nvert; i++) {
double dLat = [[latitudeArray objectAtIndex:i]doubleValue];
double dLon = [[longitudeArray objectAtIndex:i]doubleValue];
laArray[i] = dLat;
loArray[i] = dLon;
}
Это займет более 3-8 секунд на iPhone 3G (мгновенно на симуляторе - еще одна причина для тестирования на устройстве)
есть ли более быстрый способ? Я должен в итоге получить laArray[i]
и loArray[i]
как массивы двойных в стиле c.
(чтобы расширить вопрос в пользу комментатора):
Каждый массив состоит из содержимого в стиле @ 38.448745 (lat) и @ "- 122.9847684" (lon). Я делаю это потому, что меня помещают в NSArray, а lat и lon должны быть объектами. Я просто использовал:
[latitudeArray addObject:[NSString stringWithFormat: @"%.10f",dlat]];
[longitudeArray addObject:[NSString stringWithFormat: @"%.10f",dlon]];
Полагаю, я мог бы изменить это на:
[latitudeArray addObject:[NSNumber numberWithDouble: @"%.10f",dlat]];
[longitudeArray addObject:[NSNumber numberWithDouble: @"%.10f",dlon]];
... что может сократить время преобразования
double dLat = [[latitudeArray objectAtIndex:i]doubleValue];
но разве мне не понадобится точная строка для преобразования из NSString в double? Это может работать быстрее?
ТНХ