如何创建一个表示常量NSString值的宏?我越来越 在Xcode 4中定义时,“多字符字符常量”和“字符常量对于其类型太长”警告:
#define LEVELTYPEGLASS @"Glass"
我需要逃避什么吗?
答案 0 :(得分:3)
避免使用字符串常量的定义。在头文件中定义为extern,如下所示:
extern NSString * const MYLevelTypeGlass;
它们在任何实现文件中实现:
NSString * const MYLevelTypeGlass = @"Glass";
这样可以输入更多字符,但增加了许多好处,比如更好地键入Xcode,保证对象标识(没有重复的字符串)。这就是Apple如何做到这一点,如果它足够好,它应该对你有好处。
答案 1 :(得分:1)
PeyloW建议的解决方案很棒。但我只想注意,在将#import“Foundation / Foundation.h”添加到头文件后,我得到了解决方案。因此头文件Constants.h应该如下所示:
#import "Foundation/Foundation.h"
extern NSString * const LEVELTYPEGLASS;
#define IMAGECOUNT 5
...
然后,实现文件如下所示:
#import "Constants.h"
NSString * const LEVELTYPEGLASS = @"Glass";
如果你需要将它包含到整个项目中,你需要在-Prefix.pch文件中导入它:
#import "Constants.h"
在这种情况下,所有宏定义都驻留在Constants.h头文件中,并且一些NSString常量驻留在Constants.m实现文件中。再次,感谢PeyloW:)