Effective Objective-C 2.0 第4条:多用类型常量,少用#define预处理指令

Define预定义类型

define ANIMATION_DURATION 0.3

特点:预处理指令会把源代码中的ANIMATION_DURATION字符替换成0.3
缺点:这样定义的常量没有类型信息

Static Const常量

static const NSTimeInterval kAnimationDuration = 0.3;

特点:用此方式定义的常量包含类型信息,其好处是清楚地描述了常量的含义。命名方法:若常量局限于某“编译单元”之内,则在前面加字母k;若常量在类之外可见,则通常以类名为前缀。

若不打算公开某个常量,则应将其定义在使用该常量的m文件里。
常量一定要同时用static与const来声明。如果试图修改由const修饰符所声明的变量,那么编译器就会报错,而static修饰符则意味着该变量仅在此变量的编译单元中可见。在OC中,编译单元通常指该类的实现文件。如果声明常量时不加static,则编译器会为它创建一个“外部符号”,此时如果若是另一个编译单元中也声明了同名变量,编译器报错。

声明一个外界可见的常值变量:

//In the header file
extern NSString* const EOCStringConstant;
//In the implementation file
NSString* const EOCStringConstant = @”VALUE”;

此常量需放在“全局符号表”中,以便可以在定义该常量的编译单元之外使用。
特点:该常量在头文件中“声明”,且在实现文件中“定义”。而且Extern告诉编译器在全局符号表中将会有一个名叫EOCStringConstant的符号。此类常量必须定义,而且只能定义一次。由实现文件生成目标文件时,编译器会在“数据段”为字符串分配空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值