申し訳ありませんが、これは簡単な質問ですが、iOS 開発と Objective-C は初めてです。
ac# のバックグラウンドから来て、テキスト ボックス内の文字列を解析し、true の場合はそれを int に割り当てて合計で使用し、それをラベルに割り当てます。
iOS と obj-c では、上記で問題が発生し、次に何を解放して割り当てる必要があるかを説明します。
助けていただければ幸いです。
申し訳ありませんが、これは簡単な質問ですが、iOS 開発と Objective-C は初めてです。
ac# のバックグラウンドから来て、テキスト ボックス内の文字列を解析し、true の場合はそれを int に割り当てて合計で使用し、それをラベルに割り当てます。
iOS と obj-c では、上記で問題が発生し、次に何を解放して割り当てる必要があるかを説明します。
助けていただければ幸いです。
そのために使用できますNSScanner
。例えば:
NSString *test = @"45";
NSScanner *scanner = [[NSScanner alloc] initWithString:test];
NSInteger integer;
if ([scanner scanInteger:&integer])
{
NSLog(@"The value is: %i", integer);
}
else
{
NSLog(@"Didn't parse successfully.");
}
別の回答として、intValue
またはintegerValue
onを使用できますNSString
。このアプローチについては、次の点に注意してください。
両方とも空白NSScanner
をintValue
許可するため、 45
正常に解析されます。NSScanner では、必要に応じてsetCharactersToBeSkipped
to nilを使用して無効にすることができます。
[scanner setCharactersToBeSkipped:nil];
そこから、 のような通常の算術演算を実行しinteger + 20
たり、解析した他の数値を合計したりできます。
ロケールが重要な場合 ( Julien の回答を参照)、たとえば、en-US ロケールが常に使用されるようにする場合は、setLocale
NSScanner でメソッドを使用します。NSLocale
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[scanner setLocale: locale];
私が解放して割り当てる必要があるもの。
それはかなり多くのことに依存します。ARCを使用していますか?その場合は、ARC がリリースを処理します。メモリ管理について読みたいと思うかもしれません。
UITextField から文字列を取得するには (*textField が UITextField であると仮定)
int integetValue=[textField.text intValue];
次に、通常の int と同じように合計できます。この値を UILabel に設定するには、次のことを行う必要があります(合計が整数の要約であると仮定します):
[label setText:[NSString stringWithFormat:@"%d",sum]];
この場合、何も割り当て/解放する必要はありません。