【发布时间】:2014-05-12 19:07:14
【问题描述】:
我正在编写一个 iOS 应用程序。我已经离开 #define 来创建我的常量值。关于这些样式声明的使用,我有几个问题:NSString *const segueToMainMenu
如果我在内部使用这些,我会将它们放在 .m 文件中。但是,我应该将这些包裹在
@implementation块周围还是在它之外,或者这有关系吗?我在里面思考,因为它们是特定于实现的,而不是全局的,但我不确定。任何细节表示赞赏。
1234563部分,然后在标准做法仍然是用“k”前缀命名常量(例如
kAnimationDuration)还是我现在应该做MainMenuViewControllerAnimationDuration之类的事情?我想是的,如果是这样,我如何命名它们对数字 1(即不是外部)的常量有影响吗?换句话说,那些在我的实现之外是可见的吗?
@implementation 部分中定义它们?与仅使用 Constants.h 文件并将其与其他标头一起包含的旧方法相比,这有什么好处?为什么我现在需要两个文件?
非常感谢您的澄清。
【问题讨论】:
-
您不能将
NSString * Constant = @"Contant"放在 .h 文件中,因为该行可能会在多个 .c/.m 文件中#included ..您最终会得到一个乘法-定义的符号。这就是为什么您在 .h 中声明常量,并在相应的 .c/.m 文件中定义它(一次)。 -
啊...明白了。我没有这样想过,但是当你这样说时,它完全有道理,我为需要问而感到有点尴尬;)
-
Lew .. 你熟悉使用单例吗?有时常量只是一个坏主意,但有更好的方法。通常(不是每次但通常)当你出于某种原因有常量时——这不是最好的方法。顺便说一句,预处理器很棒:有人可能会争辩说,在极少数情况下您需要常量,它们应该“作为宏工作得很好”。尝试使用更多类别、更多类、更少常量!
-
@JoeBlow 很好——像这样的常量真的是单例。虽然我想编译器可能“唯一”你所有的字符串,如果你使用宏
-
嘿@nielsbot!一个很好的技术点,但老实说,我相信这不是语言机制问题。压倒性的问题是绝对清晰,并通过使代码非常优雅来为客户(或您自己)增加货币价值。你想要的是热的,Claudia Schiffer 式的代码,真的很漂亮。编译器技术来来去去,嗯...
标签: ios objective-c cocoa-touch