Sto usando NSUSerDefaults per memorizzare le preferenze dell'utente. Ricordo di aver letto da qualche parte che impostare le chiavi come costanti è una buona idea - e sono d'accordo. Il codice seguente è quello che ho attualmente:
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:@"polygonNumberOfSides"];
Ho provato a cambiarlo in:
@implementation Controller
NSString const *kPolygonNumberOfSides = @"polygonNumberOfSides";
-(void)savePolygonInfo {
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:kPolygonNumberOfSides];
}
Mentre questo funziona, produce " warning: passing argument 1 of 'objectForKey:' discards qualifiers from pointer target type
". Desidero mantenere il mio codice libero dagli avvisi del compilatore. Come posso correggere questo avviso?
NSString * const foo
funziona perchéNSString
è immutabile e il puntatore è immutabile quindi non può mai cambiare corretto? Inoltre, ricordo da C ++ checonst
è implicitamentestatic
(un'ottimizzazione del compilatore), quindi non c'è bisogno di chiamarlo. È vero anche qui?