IOS ARC:无法直接使用#define常量

时间:2012-12-18 08:01:37

标签: ios constants

我的MyClass.m文件中有一个名为:

的常量
#define kUDUserHistory              @"kUDUserHistory";

没有ARC,我可以直接使用它,但现在我必须将它复制到第二个变量然后使用它。如果我尝试在ARC中直接使用它,则会显示错误'预期表达式' 否-ARC

[[NSUserDefaults standardUserDefaults] setObject:data forKey:kUDUserHistory];

ARC

NSString *key = kUDUserHistory;
[[NSUserDefaults standardUserDefaults] setObject:data forKey:key];

我的具体问题是:

  • 我在这种情况下无法直接使用常数吗?
  • 管理常量的最佳方法是什么?特别是在ARC中?

2 个答案:

答案 0 :(得分:6)

#define kUDUserHistory              @"kUDUserHistory";

应该是:

#define kUDUserHistory              @"kUDUserHistory"

您的回答:

[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"kUDUserHistory";];

首先将其传递给NSString

NSString *key = @"kUDUserHistory";;

这就是为什么它有效。

答案 1 :(得分:0)

您也可以使用

<。>文件中的

extern NSString * const kUDUserHistory;

<。>文件中的

NSString * const kUDUserHistory = @“kUDUserHistory”;