美文网首页
iOS零碎知识整理

iOS零碎知识整理

作者: 谁在弹奏一曲东风破 | 来源:发表于2016-05-07 17:15 被阅读1241次

    CGFloat与float的区别

    查看CGFloat的定义就会发现

    typedef CGFLOAT_TYPE CGFloat;
    
    #if defined(__LP64__) && __LP64__
    # define CGFLOAT_TYPE double
    # define CGFLOAT_IS_DOUBLE 1
    # define CGFLOAT_MIN DBL_MIN
    # define CGFLOAT_MAX DBL_MAX
    #else
    # define CGFLOAT_TYPE float
    # define CGFLOAT_IS_DOUBLE 0
    # define CGFLOAT_MIN FLT_MIN
    # define CGFLOAT_MAX FLT_MAX
    #endif
    

    不难发现CGFloat其实是double与float的结合体,在64位系统上,CGFloat是double类型,在32位系统上是float类型;

    FOUNDATION_EXPORT与#define的区别

    #if defined(__cplusplus)
    #define FOUNDATION_EXTERN extern "C"
    #else
    #define FOUNDATION_EXTERN extern
    #endif
    
    #if TARGET_OS_WIN32
    #if defined(NSBUILDINGFOUNDATION)
    #define FOUNDATION_EXPORT FOUNDATION_EXTERN __declspec(dllexport)
    #else
    #define FOUNDATION_EXPORT FOUNDATION_EXTERN __declspec(dllimport)
    #endif
    #define FOUNDATION_IMPORT FOUNDATION_EXTERN __declspec(dllimport)
    #else
    #define FOUNDATION_EXPORT  FOUNDATION_EXTERN
    #define FOUNDATION_IMPORT FOUNDATION_EXTERN
    #endif
    

    仔细看这段代码就知道,FOUNDATION_EXPORT的作用相当于extern,define不会对所定义的内容进行检查,所以具体用法也是不一样的。

    一般情况下FOUNDATION_EXPORT的用法

    xxx.h
    
    FOUNDATION_EXPORT NSString *const USERNAME;
    FOUNDATION_EXPORT int PASSWORD;
    
     xxx.m
    
    NSString *const USERNAME = @"user_name";
    int PASSWORD = 123;
    

    相关文章

      网友评论

          本文标题:iOS零碎知识整理

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