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 foohoạt động vìNSStringlà 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 ++constlà 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?