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

Muh*_*rif -2 constants ios

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

#define kUDUserHistory              @"kUDUserHistory";
Run Code Online (Sandbox Code Playgroud)

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

[[NSUserDefaults standardUserDefaults] setObject:data forKey:kUDUserHistory];
Run Code Online (Sandbox Code Playgroud)


NSString *key = kUDUserHistory;
[[NSUserDefaults standardUserDefaults] setObject:data forKey:key];
Run Code Online (Sandbox Code Playgroud)

我的具体问题是:

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

Rui*_*res 6

#define kUDUserHistory              @"kUDUserHistory";
Run Code Online (Sandbox Code Playgroud)

应该:

#define kUDUserHistory              @"kUDUserHistory"
Run Code Online (Sandbox Code Playgroud)

为了你的答案:

[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"kUDUserHistory";];
Run Code Online (Sandbox Code Playgroud)

首先将它传递给NSString:

NSString *key = @"kUDUserHistory";;
Run Code Online (Sandbox Code Playgroud)

这就是它的原因.

  • @MuhammadNabeelArif因为它扩展为`var = @"string";;`并且空语句有效,只是不在表达式中.但是在尝试编写iOS应用程序之前,你不能正确学习C语言吗? (2认同)