我使用NSUSerDefaults来存储用户首选项。我记得在某处把键设置为常量是个好主意 - 我同意。下面的代码是我目前有:使用常量NSString作为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`(一个编译器优化),所以不需要调用它。这里也是如此吗? – Ternary 2015-12-21 17:02:39