Objective-C好习惯 之 少用#define

  开发的时候,不免要定义一些常量,例如 #define offSet 30 这样,把offSet替换为30。但是这样定义出来的常量没有类型信息,命名又未明确指出类型。有个办法比#define更好,那就是类型常量:

static const CGFloat offSet = 30;

  这样的话就清楚描述了常量的含义,可以知道类型为CGFloat,代码更容易理解。而且也要注意定义常量的位置,如果不用公开的,可以在.m文件定义,一定同时要用static和const来声明。

  但是有时候需要对外公开某个常量值,此类常量需要放在“全局符号表”中,以便可以在定义该常量的编译单元之外使用,定义方式与上述有所不同:

//.h文件

extern NSString *const SPNString;

//.m文件

NSString *const SPNString = @"String";

  在.h文件中声明,在.m文件中定义,注意本次命名添加了前缀,因为定义为全局变量,要避免命名冲突,最好加上自己的前缀。SPNString是一个常量,而且是指针类型的常量,指向 NSString对象。extern关键字是告诉编译器,全局符号表中有一个叫SPNString的符号。编译器无需查看其定义,即允许代码使用此常量。一般来说,此类常量必须要定义,而且切记只能定义一次。

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

推荐阅读更多精彩内容