Używam NSUSerDefaults do przechowywania preferencji użytkownika. Pamiętam, że czytałem gdzieś, że ustawienie kluczy jako stałych to dobry pomysł - i zgadzam się. Poniższy kod jest co obecnie mam:Używanie stałego NSString jako klucza dla NSUserDefaults
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:@"polygonNumberOfSides"];
Próbowałem zmieniając to:
@implementation Controller
NSString const *kPolygonNumberOfSides = @"polygonNumberOfSides";
-(void)savePolygonInfo {
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:kPolygonNumberOfSides];
}
Choć działa, produkuje "warning: passing argument 1 of 'objectForKey:' discards qualifiers from pointer target type
". Chciałbym, aby mój kod był wolny od ostrzeżeń kompilatora. Jak mogę naprawić to ostrzeżenie?
'NSString * const foo' działa, ponieważ' NSString' jest niezmienny, a wskaźnik jest niezmienny, więc nigdy nie może zmienić się poprawnie? Ponadto, pamiętam z C++, że 'const' jest niejawnie' static' (optymalizacja kompilatora), więc nie trzeba go wywoływać. Czy to również tutaj jest prawdą? – Ternary