#define kLeftWidth 15 设置距左边距为15 如果此时 你导入一个头文件 并且里面也含有kLeftWidth这玩意 那么头文件中的kLeftWidth会被替换。(#define称为预处理指令)
解决方式 static const CGFloat kLeftWidth = 15 为什么加个k?因为改常量局限在这个.m文件内(编译单元) 这是命名习惯 也是规范 合作开发才能更加没代沟 const作用:你试图修改常量,编译器就会报错 而static的作用是定义的该变量仅在编译单元可见(作用域在此.m范围内) 如果不使用static,其他编译单元也是用同名的变量 ,编译器就会抛出错误
extern NSString *const someValue;
NSString *const someValue = @“12”;
extern的作用 告诉编译器,全局符号表将会有一个叫someValue 的符号 也就是编译器不需要知道这是什么,即允许代码使用此常量