gpt4 book ai didi

iphone - 将 NSArrays 转换为 C 样式( double )数组的最快例程是什么?

转载 作者:搜寻专家 更新时间:2023-10-30 19:40:50 25 4
gpt4 key购买 nike

我有 2 个 NSArray(实际上是可变的),我试图将它们转换为 C 风格的 double 组,用于我将它们传递给的 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;
}

这在 3G iPhone 上需要超过 3-8 秒(在模拟器上是瞬时的——这是在设备上测试的另一个原因)

有没有更快的方法?我必须以 laArray[i]loArray[i] 作为 c 风格的 double 组结束。

(为了评论者的利益扩展问题):每个数组由@"38.448745"(纬度)和@"-122.9847684"(经度)样式内容组成。我这样做是为了将其推到 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?它可能工作得更快?

谢谢

最佳答案

dlat 是 double ,对吧?

所以代替:

[latitudeArray addObject:[NSString stringWithFormat: @"%.10f",dlat]];

做:

[latitudeArray addObject:[NSNumber numberWithDouble:dlat]];

它们都对 doubleValue 做出响应,但是 NSNumber 不需要进行任何字符串解析,因为它已经存储为数值。而且您根本不需要访问字符串。

关于iphone - 将 NSArrays 转换为 C 样式( double )数组的最快例程是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2225304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com