NSUSerDefaultsを使用してユーザー設定を保存しています。キーを定数として設定するのは良い考えだとどこかで読んだことを覚えています-そして私は同意します。次のコードは私が現在持っているものです:
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:@"polygonNumberOfSides"];
これを次のように変更してみました:
@implementation Controller
NSString const *kPolygonNumberOfSides = @"polygonNumberOfSides";
-(void)savePolygonInfo {
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:kPolygonNumberOfSides];
}
これは機能しますが、「warning: passing argument 1 of 'objectForKey:' discards qualifiers from pointer target type
」を生成します。私は自分のコードをコンパイラの警告から解放したいと思っています。この警告を修正するにはどうすればよいですか?
NSString * const foo
なぜならNSString
不変で、ポインタは不変であるので、それが正しい変えることはできませんか?また、const
暗黙的にstatic
(コンパイラの最適化)であるC ++を思い出すので、呼び出す必要はありません。ここでもそうですか?