先贴代码:
import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSNumber* intNumber=[NSNumber numberWithInt:10];
NSInteger value_1=[intNumber integerValue];
NSInteger value_2=(int)intNumber;
NSLog(@"value_1=%ld,value_2=%ld",(long)value_1,(long)value_2);
}
return 0;
}
输出的结果为:
2015-10-14 22:36:11.096 Data[8213:381135] `value_1=10,value_2=2599`
Program ended with exit code: 0
为什么是value_1与value_2的值不一样呢?这也是我在写项目时遇到的问题,先解释下知识点:
其中,NSInteger、CGFloat是基本数据类型,而NSValue、NSNumber是包装类,NSValue是NSNumber的父类。
理解了这些知识点后,不难理解上面的代码的输出结果,NSNumber是个对象,不能直接通过(int)来转换,而只能通过[Number integerValue]方法来获取值。
本文通过一个具体的Objective-C代码示例,详细解析了NSNumber对象与基本整型数据间的转换方式,强调了正确使用integerValue方法的重要性。
908

被折叠的 条评论
为什么被折叠?



