Я використовую 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
(оптимізація компілятора), тому не потрібно його називати. Це правда і тут?