-2

MyClass.m ファイルに次の名前の定数があります。

#define kUDUserHistory              @"kUDUserHistory";

ARC がない場合は直接使用できましたが、2 番目の変数にコピーしてから使用する必要があります。ARC で直接使用しようとすると、エラー'Expected Expression'が表示されます。
アークなし

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

アーク

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

私の特定の質問は次のとおりです。

  • この場合、定数を直接使用できないのはなぜですか?
  • 特にARCで定数を管理するための最良のアプローチは何ですか?
4

2 に答える 2

6
#define kUDUserHistory              @"kUDUserHistory";

次のようにする必要があります。

#define kUDUserHistory              @"kUDUserHistory"

あなたの答えのために:

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

最初にに渡すNSString

NSString *key = @"kUDUserHistory";;

それが機能する理由です。

于 2012-12-18T08:03:02.910 に答える
0

使用することもできます

.h ファイル内

extern NSString * const kUDUserHistory;

.m ファイルで

NSString * const kUDUserHistory = @"kUDUserHistory";

于 2012-12-18T08:04:42.263 に答える