2010-07-28 74 views
1

之間的變化值我在我的applicationWillTerminate下面的代碼的應用程序委託:推出NSUserDefaults的

NSLog(@"Source: %d", [[NSUserDefaults standardUserDefaults] integerForKey:@"Source"]); 

和我有相同的代碼,我在同一個應用程序委託的applicationDidFinishLaunching。

當我退出應用程序時,日誌顯示一個值(比如101),當我重新啓動應用程序時,日誌顯示另一個值(比如105)。隨後在用戶默認值中更改值(比如說102)可以正常工作,因爲當我再次退出應用程序時,正確的值(此時爲102)將記錄在applicationWillTerminate方法中。但是,無論該值更改爲何值,都會重複重新啓動應用程序日誌105。

如果我從模擬器中刪除應用程序並重新啓動它,則啓動時會顯示一個完全不同的值,並且此值始終顯示用於後續啓動。

我不知道這裏發生了什麼。任何人有任何想法?

回答

4

我不知道在您的零件上沒有任何努力的啓動值之間的變化,但是當您設置首選項的值時,該值不會「保存」。您首先需要在NSUserDefault對象上調用synchronize

例如

[_defaults setInteger:1 forKey:@"key"]; 
[_defaults synchronize]; 
+0

它的工作... Thanks Freespace – Raviraja 2010-07-28 11:42:04