NSInteger 是什么

作者: zcwfeng | 来源:发表于2017-12-13 11:00 被阅读17次

    先看源代码

    /*  NSObjCRuntime.h
        Copyright (c) 1994-2012, Apple Inc. All rights reserved.
    */
    
    #ifndef _OBJC_NSOBJCRUNTIME_H_
    #define _OBJC_NSOBJCRUNTIME_H_
    
    #include <TargetConditionals.h>
    #include <objc/objc.h>
    
    #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
    
    #define NSIntegerMax    LONG_MAX
    #define NSIntegerMin    LONG_MIN
    #define NSUIntegerMax   ULONG_MAX
    
    #define NSINTEGER_DEFINED 1
    
    #ifndef NS_DESIGNATED_INITIALIZER
    #if __has_attribute(objc_designated_initializer)
    #define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
    #else
    #define NS_DESIGNATED_INITIALIZER
    #endif
    #endif
    
    #endif
    
    

    int、 NSInteger、 NSUInteger、NSNumber之间的区别和联系
    int : 当使用int类型定义变量的时候,可以像写C程序一样,用int也可以用NSInteger,推荐使用NSInteger ,因为这样就不用考虑设备是32位还是64位了。
    NSUInteger是无符号的,即没有负数,NSInteger是有符号的。
    NSInteger是基础类型,NSNumber是一个类,如果需要存储一个数值,直接使用NSInteger是不行的

    相关文章

      网友评论

        本文标题:NSInteger 是什么

        本文链接:https://www.haomeiwen.com/subject/zplaixtx.html