J'utilise NSUSerDefaults pour stocker les préférences de l'utilisateur. Je me souviens avoir lu quelque part que définir les clés en tant que constantes est une bonne idée - et je suis d'accord. Le code suivant est ce que j'ai actuellement:
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:@"polygonNumberOfSides"];
J'ai essayé de changer cela en:
@implementation Controller
NSString const *kPolygonNumberOfSides = @"polygonNumberOfSides";
-(void)savePolygonInfo {
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:kPolygonNumberOfSides];
}
Bien que cela fonctionne, cela produit " warning: passing argument 1 of 'objectForKey:' discards qualifiers from pointer target type
". Je tiens à garder mon code exempt d'avertissements du compilateur. Comment puis-je corriger cet avertissement?
NSString * const foo
fonctionne car ilNSString
est immuable et le pointeur est immuable donc il ne peut jamais changer, correct? Aussi, je me souviens de C ++ quiconst
est implicitementstatic
(une optimisation du compilateur) donc pas besoin de l'appeler. Est-ce vrai ici aussi?