Estou usando NSUSerDefaults para armazenar as preferências do usuário. Lembro-me de ter lido em algum lugar que definir as chaves como constantes é uma boa ideia - e eu concordo. O código a seguir é o que eu tenho atualmente:
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:@"polygonNumberOfSides"];
Tentei mudar isso para:
@implementation Controller
NSString const *kPolygonNumberOfSides = @"polygonNumberOfSides";
-(void)savePolygonInfo {
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:kPolygonNumberOfSides];
}
Enquanto isso funciona, ele produz " warning: passing argument 1 of 'objectForKey:' discards qualifiers from pointer target type
". Estou ansioso para manter meu código livre de avisos do compilador. Como posso corrigir esse aviso?
NSString * const foo
funciona porqueNSString
é imutável e o ponteiro é imutável, então nunca pode mudar correto? Além disso, lembro-me do C ++ queconst
é implicitamentestatic
(uma otimização do compilador), então não há necessidade de chamá-lo. Isso também é verdade aqui?