web-dev-qa-db-ja.com

目的C-NSStringからIntへの型キャスト

私は次のObjective Cコードを使用しています。ここでNSStringintにキャストしています。

NSString *a=@"123abc";
NSInteger b=(int) a;
NSLog(@"b: %d",b);

そしてNSLogはこの出力を生成します:

b: 18396

なぜこれが起こっているのか誰かに説明できますか?

文字列を整数にキャストすると、文字列から数値が取得されるという印象タイプでした。

21
Jimmery

そこにNSStringオブジェクトへのポインターの整数値があります。文字列を整数に解析するには、次のようにします。

NSString *a = @"123abc";
NSInteger b = [a integerValue];
37
Cfr

数値を取得するには、以下を使用します。

int val = [stringObj intValue];

またはNSIntegerの場合:

NSInteger val = [stringObj integerValue];
11
giorashc

オブジェクトを整数にキャストすると、メモリアドレスへのポインタが取得されます。 [a integerValue]を呼び出して、文字列の整数値を取得できます。

また、キャストする場合は、NSIntegerintを使用することをお勧めします。 64ビットのオペレーティングシステムを使用する場合、NSIntegerは64ビットになるためです。

5
rckoenes

または、Objective-Cリテラル構文を使用します。

@([a intValue]);
0
Nenad M