NSInteger32位64位问题

64bit

1
orderNum = 1150815970118744;

32bit

1
2
3
4
(lldb) po model.orderNum
-1714505370
(lldb)

解决方式

1
@property (nonatomic,copy) NSString * orderNum;

原因:

1
2
3
4
5
6
7
#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

NSInteger在32位时等同于int,在64位时等同于long

32bit下:

unsigned int 0~4294967295

int -2147483648~2147483647

long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808