程序员iOS开发技术分享iOS Developer

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

2016-05-30  本文已影响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”;

上一篇下一篇

猜你喜欢

热点阅读