2011-01-09 48 views
1

我有我的課的一些代碼NSUserDefaults的從NSUserDefaults的:檢測無

NSUserDefaults *defs = [NSUserDefaults standardUserDefaults]; 
score = [defs integerForKey:@"score"]; 

這會導致系統崩潰閱讀。

林猜測這是因爲分數值是零或不存在。

我該如何檢查它是否爲零?

編輯。

以下代碼在存儲到NSUserDefaults時會導致崩潰。

NSUserDefaults *defs = [NSUserDefaults standardUserDefaults]; 
    [defs setInteger:0 forKey:@"score"]; 
    [defs setInteger:3 forKey:@"lives"]; 
    [defs release]; 

林不知道這個問題是

在某些崩潰心不是即使在控制檯崩潰報告。

由於

回答

9

作爲每文檔,「如果指定鍵不存在,則此方法返回0」。所以即使你沒有設置它,integerForKey也會一直返回一個NSInteger。

編輯: 現在你已經編輯你的問題,我可以看到問題。你正在發佈NSUserDefaults。沒有理由這樣做。從代碼中刪除[release]行。

[NSUserDefaults standardUserDefaults]返回一個單例類。你不擁有它,所以你不應該釋放它。如果您對何時保留/發佈感到困惑,請查看Apple Memory Mangement Rules

+0

我得到以下錯誤 - [__ NSCFSet integerForKey:]:無法識別的選擇發送到實例0x69697b0' – jarryd 2011-01-09 16:45:06