使用场景一:定义全局用字符串,
替换方式见本人文章OC中extern、static、const和宏定义第8条
使用场景二:定义成员变量
#define HA_ROUNDCORNER_RADIO 3.0f
替换方式为:
static const CGFloat HA_ROUNDCORNER_RADIO = 3.0f;
这里的static 加不加皆可,但是最好加上,区别如下:
全局变量,静态全局变量的区别。
1.在全局变量前加static,全局变量就被定义成为一个全局静态变量(全局变量和静态全局变量的生命周期是一样的,都是在堆中的静态区,在整个工程执行期间内一直存在)
特点如下:
1)存储区:静态存储区没变(静态存储区在整个程序运行期间都存在);
2)作用域:全局静态变量在声明他的文件之外是不可见的。准确地讲从定义之处开始到文件结尾。非静态全局 变量的作用域是整个源程序(多个源文件可以共同使用); 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。
好处:
1)不会被其他文件所访问,修改;
2)其他文件中可以使用相同名字的变量,不会发生冲突。
使用场景三:定义整形类型
#define COUNT_OF_VIEW 3
#define SECONDS_OF_SCROLL_INTERVAL 5
替换方式为
typedef NS_ENUM(NSInteger,Count){
COUNT_OF_VIEW = 3,
SECONDS_OF_SCROLL_INTERVAL = 5
};
把这种整形类型的宏用枚举代替,岂不是美滋滋。