Tôi đang sử dụng NSUSerDefaults để lưu trữ các tùy chọn của người dùng. Tôi nhớ mình đã đọc ở đâu đó rằng đặt các phím làm hằng số là một ý kiến hay - và tôi đồng ý. Đoạn mã sau là những gì tôi hiện có:
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:@"polygonNumberOfSides"];
Tôi đã thử thay đổi điều này thành:
@implementation Controller
NSString const *kPolygonNumberOfSides = @"polygonNumberOfSides";
-(void)savePolygonInfo {
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:kPolygonNumberOfSides];
}
Trong khi điều này hoạt động, nó tạo ra " warning: passing argument 1 of 'objectForKey:' discards qualifiers from pointer target type
". Tôi muốn giữ cho mã của mình không bị cảnh báo trình biên dịch. Làm cách nào để khắc phục cảnh báo này?
NSString * const foo
hoạt động vìNSString
là bất biến và con trỏ là bất biến nên nó không bao giờ có thể thay đổi đúng không? Ngoài ra, tôi nhớ lại từ C ++const
là ngầm địnhstatic
(tối ưu hóa trình biên dịch) nên không cần phải gọi nó ra. Điều đó có đúng ở đây không?