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

标签 iphone c objective-c nsarray

我有 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/

相关文章:

ios - 无需通过 AppStore 安装 iOS 应用程序

ios - 如何隐藏我 View 顶部的 "internet tethering"横幅?

ios - 无效图像 - 对于 iOS 应用程序,二进制提交中包含的图标必须为 PNG 格式

ios - 为什么不在每个 getter 中使用惰性实例化

ios - Apple Mach-O-Linker 错误 CocoaPods

iphone - Swift 自动布局如何使用按钮

C : Bubble sort did not finished swapping

c - C中的多线程实现本身

c++ - MessageBox "Abnormal program termination"让我的应用程序保持运行

ios - 触摸 UIScrollView 时应用程序崩溃