Saya menggunakan NSUSerDefaults untuk menyimpan preferensi pengguna. Saya ingat pernah membaca bahwa menyetel kunci sebagai konstanta adalah ide yang bagus - dan saya setuju. Kode berikut adalah yang saya miliki saat ini:
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:@"polygonNumberOfSides"];
Saya mencoba mengubah ini menjadi:
@implementation Controller
NSString const *kPolygonNumberOfSides = @"polygonNumberOfSides";
-(void)savePolygonInfo {
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:kPolygonNumberOfSides];
}
Meskipun ini berhasil, ini menghasilkan " warning: passing argument 1 of 'objectForKey:' discards qualifiers from pointer target type
". Saya ingin menjaga kode saya bebas dari peringatan kompiler. Bagaimana cara memperbaiki peringatan ini?
NSString * const foo
berfungsi karenaNSString
tidak dapat diubah dan penunjuk tidak dapat diubah sehingga tidak pernah dapat diubah, benar? Juga, saya ingat dari C ++ yangconst
secara implisitstatic
(pengoptimalan kompiler) jadi tidak perlu memanggilnya. Apakah itu benar juga di sini?