美文网首页程序员iOS开发技术分享iOS Developer
iOS的const,enum以及#define(宏定义)

iOS的const,enum以及#define(宏定义)

作者: 艾姆希 | 来源:发表于2016-05-30 11:16 被阅读232次

    如果有不对的地方请多多指正:

    1.宏在编译开始之前就会被替换掉,而const知识变量进行修饰;

    2.宏可以定义一些函数方法,const不能;

    3.宏在编译时只替换不做检查不报错,也就是说有重复定义的问题,而const会编译检查,会报错;

    4.随着项目组建增大,过多的宏定义会影响项目的编译速度,尽量多使用const,enum来代替宏定义#define

    所以先考虑使用static方式声明const来代替宏定义,const不能满足的情况再考虑使用宏定义

    例子:

    static NSString *const CLASSNAME = @“Hello”; 代替  #define CLASSNAME @“Hello”;

    static NSString CGFloat CLASSWIDTH = 10.0;        代替  #define CLASSWIDTH 10.0;

    typedef NS_ENUM(NSInteger,TestEnum){

    INT_CONST = 1;

    }

    代替   #define INT_CONST 1;

    //全局变量

    //地址不能改,值可以改,

    const NSString *constString1 =  @“a const NSString *string ”;

    NSString const *constString2 =  @“a const NSString const *string”;

    //外部使用需要extern字段,比如在VC1.m文件中定义了全局变量,在其他VC中使用需要:

    extern NSString *constString1;NSLog(@“ constString1 : %@”,constString1);

    //地址能改,值不可以改

    NSString  *const  constString3  =  @“a const NSString *const string”

    //局部变量

    //作用域只在本文件中,在其他类使用需要引用定义的类

    static const NSString *staticConstSring1  = @“a static const NSString *string”;

    static NSString const *staticConstSring2  = @“a static NSString const*string”;

    相关文章

      网友评论

        本文标题: iOS的const,enum以及#define(宏定义)

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