Estoy usando NSUSerDefaults para almacenar las preferencias del usuario. Recuerdo haber leído en alguna parte que establecer las claves como constantes es una buena idea, y estoy de acuerdo. El siguiente código es el que tengo actualmente:
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:@"polygonNumberOfSides"];
Intenté cambiar esto a:
@implementation Controller
NSString const *kPolygonNumberOfSides = @"polygonNumberOfSides";
-(void)savePolygonInfo {
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:kPolygonNumberOfSides];
}
Si bien esto funciona, produce " warning: passing argument 1 of 'objectForKey:' discards qualifiers from pointer target type
". Estoy dispuesto a mantener mi código libre de advertencias del compilador. ¿Cómo puedo solucionar esta advertencia?
NSString * const foo
funciona porqueNSString
es inmutable y el puntero es inmutable, por lo que nunca puede cambiar correctamente? Además, recuerdo de C ++ queconst
es implícitamentestatic
(una optimización del compilador), por lo que no es necesario mencionarlo. ¿Es eso cierto aquí también?