我看到很多Objective-C代码只是定义它需要的本地常量,然后继续进行。问题在于,据我所知,#define没有作用域限制。其中许多都在苹果自己的示例代码中。例如,在TableViewSuite示例5中,TimeZoneView.m文件中的drawRect函数包含以下块:
#define LEFT_COLUMN_OFFSET 10
#define LEFT_COLUMN_WIDTH 130
#define MIDDLE_COLUMN_OFFSET 140
#define MIDDLE_COLUMN_WIDTH 110
#define RIGHT_COLUMN_OFFSET 270
#define UPPER_ROW_TOP 8
#define LOWER_ROW_TOP 34
#define MAIN_FONT_SIZE 18
#define MIN_MAIN_FONT_SIZE 16
#define SECONDARY_FONT_SIZE 12
#define MIN_SECONDARY_FONT_SIZE 10
我不明白为什么这不是非常危险的,有没有什么原因? 至少,在函数结尾处,我们应该取消定义这些常量吧?
这就是我的问题:
在需要使用的文件中定义所需内容并在结尾处取消定义是否更好?还是您认为仅使用静态常量更好?使用静态常量是否会有性能损失,或者编译器能够像处理#define一样高效地处理它们?