ฉันใช้ NSUSerDefaults เพื่อจัดเก็บค่ากำหนดของผู้ใช้ ฉันจำได้ว่าอ่านที่ไหนสักแห่งว่าการตั้งค่าคีย์เป็นค่าคงที่เป็นความคิดที่ดีและฉันก็เห็นด้วย รหัสต่อไปนี้คือสิ่งที่ฉันมีอยู่ในปัจจุบัน:
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:@"polygonNumberOfSides"];
ฉันลองเปลี่ยนสิ่งนี้เป็น:
@implementation Controller
NSString const *kPolygonNumberOfSides = @"polygonNumberOfSides";
-(void)savePolygonInfo {
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:kPolygonNumberOfSides];
}
แม้ว่าจะได้ผล แต่ก็สร้าง " warning: passing argument 1 of 'objectForKey:' discards qualifiers from pointer target type
" ฉันกระตือรือร้นที่จะรักษารหัสของฉันให้ปราศจากคำเตือนของคอมไพเลอร์ ฉันจะแก้ไขคำเตือนนี้ได้อย่างไร
NSString * const foo
ใช้งานได้เนื่องจากNSString
ไม่เปลี่ยนรูปและตัวชี้ไม่เปลี่ยนรูปจึงไม่สามารถเปลี่ยนแปลงได้ถูกต้อง? นอกจากนี้ฉันจำได้จาก C ++ ที่const
เป็นนัยstatic
(การเพิ่มประสิทธิภาพคอมไพเลอร์) ดังนั้นไม่จำเป็นต้องเรียกมันออกมา เป็นเช่นนั้นจริงหรือ?