1

これは、オブジェクティブ c でのキャスト演算子の正しい使用法です。

//casting an int to float
int a = 1;
float b = (float) a;

次のように int を nsstring にキャストできない理由:

int a = 1;
NSString *c = (NSString *)a; 

//I receive the error : "cast of 'int' to 'nsstring' is disallowed with ARC"

上記を行う上で概念的に間違っているのは何ですか?

PS "c= [NSString stringWithFormat:@"%i",a];"! を使用する必要があることは既にわかっています。

4

1 に答える 1

3

あなたはこれを行うことはできません:

int a = 1;
NSString *c = (NSString*)a;

NSStringこれは、メモリアドレス0x1を指すポインタを作成しているためです。NSStringポインタを使用(「逆参照」)cしようとすると、自分のものではないメモリにアクセスしようとしているため、セグメンテーション違反が発生します。

編集:
ポインタの基本に関する優れた記事への必須リンク

于 2012-05-04T06:55:11.190 に答える