Effective Objective-C 2.0 第4条:多用类型常量,少用#define预处理指令
2015-09-04 18:17
507 查看
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 fileextern NSString* const EOCStringConstant;
//In the implementation file
NSString* const EOCStringConstant = @”VALUE”;
此常量需放在“全局符号表”中,以便可以在定义该常量的编译单元之外使用。
特点:该常量在头文件中“声明”,且在实现文件中“定义”。而且Extern告诉编译器在全局符号表中将会有一个名叫EOCStringConstant的符号。此类常量必须定义,而且只能定义一次。由实现文件生成目标文件时,编译器会在“数据段”为字符串分配空间。
相关文章推荐
- Objective-C常用类的常用方法
- Objective-C类,NSUrl介绍和使用
- Objective-C Programming (2nd Edition)
- Objective-C类,NSBundle介绍和使用
- 黑马程序员——Objective-C之面向对象基础
- 黑马程序员——Objective-C之基础知识
- 函数对象与仿函数(function object and functor)
- objective-C编程 对象的类型和动态绑定摘要
- MalformedObjectNameException: Invalid character '' in value part of property
- objective-C编程 初始化方法摘要
- java IO流 ObjectStream PipedStream 随机访问文件 字符编码--21
- [ActionScript] AS3利用SWFObject与JS通信
- Objective-C 中协议
- CSS3 Object-fit和Object-position
- Objective-C内存管理:从源码进行分析(二)
- Objective-C中ORM的运用:实体对象和字典的相互自动转换
- IOS之Objective-C学习笔记(七)
- Objective-C 【Category-非正式协议-延展】
- Objective-C 【Category-非正式协议-延展】
- Objective-C:instancetype与id