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

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

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”;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.OC里用到集合类是什么? 基本类型为:NSArray,NSSet以及NSDictionary 可变类型为:NS...
    轻皱眉头浅忧思阅读 1,405评论 0 3
  • static 修饰局部变量 让局部变量只初始化一次 局部变量在程序中只有一份内存 并不会改变局部变量的作用域,仅仅...
    大冲哥阅读 1,431评论 0 1
  • 307、setValue:forKey和setObject:forKey的区别是什么? 答:1, setObjec...
    AlanGe阅读 1,610评论 0 1
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,270评论 30 472
  • ### const,static,extern简介 ### 一、const与宏的区别(面试题): * `const...
    老骚鹅阅读 676评论 0 7