我使用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