是否可以将NSInteger转换为NSNumber?

时间:2012-03-14 07:12:43

标签: objective-c casting nsnumber nsinteger

快速提问 - 是否可以将NSInteger转换为NSNumber对象?我需要将UIImageView对象的标记转换为NSNumber对象,因为我需要将它作为参数传递给函数。

3 个答案:

答案 0 :(得分:104)

你不能施放它,因为NSInteger不是一个对象,只是一个内置类型的别名。您始终可以从NSNumber创建新的NSInteger对象,如下所示:

NSNumber *myNum = @(myNsIntValue);

或在编译器的先前版本中,使用

NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];

答案 1 :(得分:17)

Apple LLVM Compiler 4.0以来,有一种更简单的方法来创建NSNumber对象:

NSNumber *x = @1234; 
NSNumber *y = @(anIntegerVariable);

答案 2 :(得分:7)

这是更正确的答案,不会产生意外错误。

NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];

因为医生说:

“numberWithInteger: 创建并返回包含给定值的NSNumber对象,将其视为NSInteger。“

“numberWithInt: 创建并返回包含给定值的NSNumber对象,将其视为signed int。“