如何制作NSString宏?

时间:2011-08-01 15:12:09

标签: objective-c macros xcode4 nsstring

如何创建一个表示常量NSString值的宏?我越来越 在Xcode 4中定义时,“多字符字符常量”和“字符常量对于其类型太长”警告:

#define LEVELTYPEGLASS @"Glass"

我需要逃避什么吗?

2 个答案:

答案 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:)