NSNumber是对象,其父类是NSValue,NSValue的父类是NSObject,而NSInteger,NSUInteger等是基本数据类型,他们只是把C语言中的int,usigned int重新命名了一下,但具体是哪一种数据类型还得根据cpu的来决定,代码如下:
<span style="font-size:14px;">#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif</span>
常用的简化写法:
<span style="font-size:18px;"> NSNumber *num = @(65);
NSLog(@"%c",num.intValue);</span><span style="font-size:18px;"> NSNumber *ch = @('g');
NSLog(@"%c",ch.charValue);</span>NSNumber提供了很多带参初始化方法:
<span style="font-size:14px;">- (NSNumber *)initWithChar:(char)value NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithUnsignedChar:(unsigned char)value NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithShort:(short)value NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithUnsignedShort:(unsigned short)value NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithInt:(int)value NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithUnsignedInt:(unsigned int)value NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithLong:(long)value </span>也提供了很多只读属性(只有getter方法):
<span style="font-size:14px;">@property (readonly) char charValue;
@property (readonly) unsigned char unsignedCharValue;
@property (readonly) short shortValue;
@property (readonly) unsigned short unsignedShortValue;
@property (readonly) int intValue;
@property (readonly) unsigned int unsignedIntValue;
@property (readonly) long longValue;
</span>还有工厂方法:
+ (NSNumber *)numberWithChar:(char)value;
+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
+ (NSNumber *)numberWithShort:(short)value;
+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
+ (NSNumber *)numberWithInt:(int)value;
本文详细介绍了NSNumber类及其与NSInteger等基本数据类型的区别。通过代码示例展示了如何使用NSNumber的初始化方法及属性,并提供了多种类型的NSNumber实例创建方式。

870

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



