如何正确定义常量

Hid*_*den 7 c objective-c

可能重复:
目标C中的常量

我正在设计一个控制器,我需要一些常量(本地,只为那个控制器).看一下Apple提供的一些示例代码,我可以看到以下几行:

#import "Constants.h"

#define kTextFieldWidth 260.0

static NSString *kSectionTitleKey = @"sectionTitleKey";
static NSString *kSourceKey = @"sourceKey";
static NSString *kViewKey = @"viewKey";

const NSInteger kViewTag = 1;
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释它们之间的区别是什么?我应该使用哪种款式?它们是否依赖于您分配给它们的对象/值的类型?含义用途:static NSString *用于字符串,#define浮点数和NSInteger整数?你如何做出选择?

Per*_*ion 5

#define关键字是一个编译时指令,它使define'd值直接注入到代码中.它在整个程序和所有链接库中是全球性的.因此,您可以根据您仅为控制器创建常量的愿望将其从列表中删除.

静态和const之间的主要区别是,静态变量初始化后可以更改,常量的人不能.如果您希望能够在初始化后修改变量,那么您应该使用static关键字.

希望有所帮助.


Joe*_*Joe 0

正如斯科特和本扎多指出的那样,这是定义恒定价值观的最佳方式。然而,就定义而言,使用定义进行调试比较困难,因为您通常无法轻松地在调试器中看到扩展值。如果您打算全局公开变量,则只需将 extern 声明添加到类的头文件中。接下来要记住的是将const声明放在指针 (*) 之后,否则在大多数用途中您将收到关于指针丢弃限定符的警告。