如何正确定义常量

6 浏览
0 Comments

如何正确定义常量

这个问题已经有答案了

可能是重复的问题:

Constants in Objective 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;

谁能解释一下它们之间的区别是什么?我应该使用哪种样式?它们是否取决于您分配给它们的对象/值的类型?这意味着使用:static NSString *用于字符串,#define用于浮点数和NSInteger用于整数。您如何做出选择?

admin 更改状态以发布 2023年5月23日
0
0 Comments

正如Scott和benzado指出的那样,这是定义常量值的最佳方式。但是对于定义而言,使用定义比较难以调试,因为在调试器中通常无法轻松地看到扩展值。仅在意图将变量全局公开时,您才需要在类的头文件中添加外部声明。并且要记住将const声明放在指针(*)之后,否则在大多数情况下,您将获得指针中丢弃修饰符的警告。

0
0 Comments

#define关键字是一个编译时的指令,它会将定义的值直接注入到您的代码中。它在整个程序和所有链接的库中都是全局的。因此,您可以根据您对控制器的常量需求,将其从列表中删除。

静态变量和常量的主要区别在于,静态变量可以在初始化后进行更改,而常量则不能。如果您想在初始化后修改变量,则应使用静态关键字。

希望这能帮到您。

0