Objective-C常量是否应该由实现块包装?

lew*_*uez 4 cocoa-touch objective-c ios

我正在写一个iOS应用程序.我已经离开#define了创造我不变的价值观.关于这些样式声明的使用,我有几个问题:NSString *const segueToMainMenu

  1. 如果我在内部使用这些,我将它们放在.m文件中.但是,我应该将这些包裹在@implementation块体周围还是外面或者它是否重要?我在里面思考,因为它们是针对实现的而不是全局的,但我不确定.任何细节都表示赞赏.

  2. 如果我使用extern关键字创建一个更全局的范围,并且我使用的是Constants文件对(Constants.h/Constants.m),我是否需要将它们放在该@interface部分中,然后在该@implementation部分中定义它们?与仅使用Constants.h文件并将其包含在其他标头中的旧方法相比,有什么好处?为什么我现在需要两个文件?

  3. 标准做法仍然是用"k"前缀命名常量(例如kAnimationDuration)或者我现在应该做类似的事情MainMenuViewControllerAnimationDuration吗?我想象是的,如果是的话,对于1号(即不是extern)的常量我是如何命名的?换句话说,那些在我的实现之外可见吗?

澄清非常感谢.

mip*_*adi 5

无论您是将它们放在实现块中还是没有 - 只有方法是类实现的一部分,因此常量的范围不会改变.

k前缀是现在有点过时.通常的方法是将常量命名为<prefix><name>,例如"MDSomeConstant".