多用类型变量,少用#define预处理指令
若不算公开某个常量,则应该定义在该常量的实现文件里:
static const NSTimeInterval kAnimationDuration = 0.3;
static 和 const 定义的值,如果遭到修改,编译器会报错
如果要对外公开,例如创建一个通知,可以这样定义:
.h: extern NSString *const MRHStringConstant;
.m: NSString *const MRHStringConstant = @"VALUE";
编译器看到头文件的extern 关键字,就能明白如何造引入此头文件的代码中处理改常量了.这个关键字是要告诉编译器,在全局符号表中将会有一个名叫MRHStringConstant的符号。也就是说编译器无需查看其定义,即允许代码是要此变量,因为它知道当连接成二进制文件之后,肯定能找到这个常量.此类常量必须要定义,且只能定义一次。通常在声明的实现文件里。由实现文件生成目标文件时,编译器会在“数据段”为字符串分配存储空间,链接器会把此目标文件与其他目标文件链接,以生成最终的二进制文件。凡是要用到这个全局符号的地方,链接器都能解析。
用枚举表示状态 选项 状态码
typedef NS_ENUM(NSInteger,PersonType) {
PersonTypeMan = 1,
PersonTypeWomen,
};