Я использую 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
он неизменен, а указатель неизменен, поэтому он никогда не может измениться правильно? Кроме того, я вспоминаю из C ++, чтоconst
это неявноstatic
(оптимизация компилятора), поэтому нет необходимости вызывать это. Это правда и здесь?