【问题标题】:Works on iOS Simulator but not on iOS device?适用于 iOS 模拟器但不适用于 iOS 设备?
【发布时间】:2012-03-26 21:20:02
【问题描述】:

编辑:它有效,但需要很长时间才能完成。 这是正常现象,还是有办法优化?

谢谢

我在我的项目中使用 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];

希望有人可以帮助我, 谢谢

【问题讨论】:

  • 挂起可能意味着循环变得疯狂,挂起可能意味着崩溃,挂起可能意味着疯狂调度。挂的太模糊了!请提供崩溃日志。
  • 它不会崩溃,我很确定没有循环
  • 如果它是一个网络服务,那么你无能为力。如果是本地的,您可以派送它。

标签: iphone objective-c ios xcode


【解决方案1】:

您的代码对我来说似乎没问题,但您使用的是 DDUnitConverter。我从未使用过它,但我想它需要互联网连接才能从互联网加载数据。如果服务器需要很长时间才能响应,您的应用可能会挂起连接。

您可以尝试使用dispatch_async 异步连接到服务器,这可以让您的应用在后台下载数据。

【讨论】:

  • 您是否尝试删除 NSNumber *to = [[[DDUnitConverter currencyUnitConverter] convertNumber:from fromUnit:fromType toUnit:toType] retain];从你的代码?这有什么区别吗?
【解决方案2】:

任何需要花费很长时间才能完成的事情都应该被派遣。像这样:

dispatch_async(dispatch_get_global_queue(), ^(void) {
    [self doReallyAmazinglyComplicatedProcessing];
});

【讨论】:

  • 哈哈,好的,谢谢,我会试试“doReallyAmazinglyComplicatedProcessing”;)谢谢
最近更新 更多