Objective C - 将operator int转换为nsstring

时间:2012-05-04 06:48:56

标签: objective-c casting nsstring int

这是目标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"

上述做法在概念上有什么不妥?

P.S。我已经知道我应该使用“c = [NSString stringWithFormat:@”%i“,a];”!

1 个答案:

答案 0 :(得分:3)

你不能这样做:

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

因为您正在创建一个指向内存地址0x1的NSString指针。当您尝试使用(“取消引用”)NSString指针c时,您正在尝试访问不属于您的内存,并且会发生segmentation fault

修改
Obligatory link to a good article on pointer basics