Ich verwende NSUSerDefaults, um Benutzereinstellungen zu speichern. Ich erinnere mich, irgendwo gelesen zu haben, dass das Setzen der Schlüssel als Konstanten eine gute Idee ist - und ich stimme zu. Der folgende Code ist, was ich habe zur Zeit:Verwenden eines konstanten NSString als Schlüssel für NSUserDefaults
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:@"polygonNumberOfSides"];
Ich habe versucht, zu ändern, dies zu:
@implementation Controller
NSString const *kPolygonNumberOfSides = @"polygonNumberOfSides";
-(void)savePolygonInfo {
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:kPolygonNumberOfSides];
}
Während diese Arbeit tut, es produziert "warning: passing argument 1 of 'objectForKey:' discards qualifiers from pointer target type
". Ich bin daran interessiert, meinen Code frei von Compiler-Warnungen zu halten. Wie kann ich diese Warnung beheben?
'NSString * const foo 'funktioniert, weil' NSString' unveränderlich ist und der Zeiger unveränderlich ist, so dass er niemals richtig geändert werden kann? Außerdem erinnere ich mich von C++, dass "const" implizit 'static' ist (eine Compiler-Optimierung), also muss man es nicht aufrufen. Trifft das auch hier zu? – Ternary