编辑:它有效,但完成需要很长时间。 这是正常的,还是有办法优化它?
由于
我在我的项目中使用DDUnitConverter转换货币。
在iOS模拟器上一切正常,但在我尝试转换iOS设备(iPhone 4 iOSv5.1)上的货币时挂起。我环顾四周找到了解决这个问题的方法,但找不到任何东西。这是我用来兑换货币的代码。 DDUnitConverter中的代码可在此处获取:https://github.com/davedelong/DDUnitConverter/downloads
if ([Number.text isEqualToString:@""] || [picklable.text isEqualToString:@"no selection"] || [picklable2.text isEqualToString:@"no selection"]) {
return;
}
if ([Number.text isEqualToString:@"0"]) {
Result.text = @"0";
return;
}
int fromType;
int toType;
fromType = [list indexOfObject:picklable.text];
toType = [list indexOfObject:picklable2.text];
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber * from = [[f numberFromString:Number.text] retain];
[f release];
NSNumber *to = [[[DDUnitConverter currencyUnitConverter] convertNumber:from fromUnit:fromType toUnit:toType] retain];
float toto = [to floatValue];
Result.text = [NSString stringWithFormat:@"%.4f %@", toto, picklable2.text];
if ((toto == 0 || toto == [Number.text floatValue]) && picklable.text != picklable2.text ) {
Result.text = @"No Internet Connection or Previous Data";
}
[from release];
[to release];
[Result flashScrollIndicators];
希望有人可以帮助我, 感谢
答案 0 :(得分:0)
任何需要花费很长时间才能完成的事情都应该被派遣。像这样:
dispatch_async(dispatch_get_global_queue(), ^(void) {
[self doReallyAmazinglyComplicatedProcessing];
});
答案 1 :(得分:0)
您的代码对我来说似乎没问题,但您使用的是DDUnitConverter。我从来没有使用它,但我想它需要互联网连接才能从互联网上加载数据。如果服务器需要很长时间才能回答,那么您的应用可能会挂断连接。
您可以尝试使用dispatch_async
异步连接到服务器,这样您的应用就可以在后台下载数据。