Ich verwende NSUSerDefaults, um Benutzereinstellungen zu speichern. Ich erinnere mich, dass ich irgendwo gelesen habe, dass es eine gute Idee ist, die Schlüssel als Konstanten festzulegen - und ich stimme zu. Der folgende Code ist der, den ich derzeit habe:
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:@"polygonNumberOfSides"];
Ich habe versucht, dies zu ändern in:
@implementation Controller
NSString const *kPolygonNumberOfSides = @"polygonNumberOfSides";
-(void)savePolygonInfo {
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:kPolygonNumberOfSides];
}
Während dies funktioniert, erzeugt es " warning: passing argument 1 of 'objectForKey:' discards qualifiers from pointer target type
". Ich möchte meinen Code frei von Compiler-Warnungen halten. Wie kann ich diese Warnung beheben?
NSString * const foo
funktioniert, weilNSString
unveränderlich ist und der Zeiger unveränderlich ist, so dass er sich nie richtig ändern kann? Ich erinnere mich auch an C ++,const
das implizit iststatic
(eine Compiler-Optimierung), so dass es nicht nötig ist, es aufzurufen. Gilt das auch hier?