[英]Works on iOS Simulator but not on iOS device?
編輯:它可以工作,但是要花很長時間才能完成。 這是正常現象,還是有優化方法?
謝謝
我在項目中使用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];
希望有人可以幫助我,謝謝
任何需要花費很長時間的事情都應該派遣出去。 像這樣:
dispatch_async(dispatch_get_global_queue(), ^(void) {
[self doReallyAmazinglyComplicatedProcessing];
});
您的代碼對我來說似乎還可以,但是您正在使用DDUnitConverter。 我從未使用過它,但我想它需要Internet連接才能從Internet加載數據。 如果服務器需要很長時間來回答,您的應用程序可能會掛起連接。
您可以嘗試使用dispatch_async
異步連接到服務器,這使您的應用程序可以在后台下載數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.