另外,如果使用extern const
,是否需要导入文件,或者不导入文件,常量将全局可用?
我可以从逻辑上得出一个结论,即enum
是定义自定义错误域之类的东西时的最佳选择(我真的对吗?)。但其他人呢?
第一个问题是你希望你的常数有什么范围,这实际上是两个问题:
如果它们是特定的并且是单个类内部的,那么在。m文件的顶部将它们声明为静态常量
,如下所示:
static NSString *const MyThingNotificationKey = @"MyThingNotificationKey";
//.h
extern NSString *const MyThingNotificationKey;
//.m
NSString *const MyThingNotificationKey = @"MyThingNotificationKey";
现代的答案是因为调试器不知道您的宏。如果mythingnotificationkey
是宏,则不能在调试器命令中说[myThing addobserver:self forkey:mythingnotificationkey]
;只有当它是变量时,调试器才能知道它。
嗯,rmaddy在注释中比我更好:enum
只能定义整数常量。像串行标识符号、位掩码、四字节码等。
对于这些目的,enum
非常好,您绝对应该使用它。(更好的方法是使用ns_enum
和ns_options
宏。)对于其他的东西,你必须用其他的东西;枚举
只做整数。
每个解决方案的用例是什么?
#define
:非常有限。老实说,我不确定是否有充分的理由再将此用于常量。const
:最适合本地常量。此外,您必须将其用于在标头中声明并正在定义的。静态常量
:最适合于特定于文件(或特定于类)的常量。extern const
:导出标头中的常量时必须使用它。另外,如果使用extern const
,是否需要导入文件,或者不导入文件,常量将全局可用?
问题内容: 我看过这样的例子: 并假设我可以有一个Constants类来包装常量,并声明它们为static final。我几乎不了解Java,并且想知道这是否是创建常量的最佳方法。 问题答案: 这是完全可以接受的,甚至可能是标准。 类型是哪里,是所有大写字母的名称,下划线带有空格,并且VALUE是常量值; 我强烈建议不要将常量放在自己的类或接口中。 附带说明:声明为final且可变的变量仍然可以更
问题内容: 我正在寻找一种库/方法来解析比通用xml解析库具有更多html特定功能的html文件。 问题答案: 这是一个敏捷的HTML解析器,它构建了一个读/写DOM并支持纯XPATH或XSLT(您实际上不必了解XPATH或XSLT来使用它,不用担心…)。这是一个.NET代码库,可让您解析“网络外” HTML文件。该解析器对“真实世界”格式的HTML十分宽容。对象模型与提出System.Xml的对
为了让这个布局正常工作,我已经挣扎了好几个小时。 这是我的代码: 每个片段都是一个简单的RelativeLayout(都有相同的视图): 现在我想让它像这样工作: > 1) 无嵌套layout_weight 2)完全没有嵌套(例如嵌套2个第一个片段等) 3)在视图呈现后,不使用代码以编程方式完成。 在我看来,最简洁、可读性最强的方法是将片段1和片段2的方向设置为水平,将片段3设置为垂直,但它不起作
问题内容: 好吧,这并不是一个问题,因为我并没有真正“卡住”我的代码,但是我发现Android API在访问外部存储设备和File.createTempFile()方法方面有些奇怪的行为, d想了解正在发生的事情… 请注意,我的清单 中不 包含。 第1部分 : 我有以下代码,它 确实可以 发挥作用: 它会为我创建一个临时文件,并且我可以毫无问题地在其中写入数据。 问题1 :为什么该功能有效,因为我
问题内容: 例如,在Java中,我可能有一个类,并且有一个名为的静态方法,因此我可以执行以下操作: 我该如何在目标C中做类似的事情? 非常感谢 问题答案: 在Objective-C中,您将此称为“类方法”,请参见此处: 该 + 是最重要的事情; 您可以这样调用方法: