2016-04-14 115 views

回答

1
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; 

這是一類方法將會返回NSUserDefaults的共享實例。因爲它是一個共享實例。它是在全球範圍內存儲數據的理想場所,可以跨應用程序訪問。

NSUserDefaults *userDefault = [[NSUserDefaults alloc] init]; 

這是一個實例方法,它將初始化NSUserDefaults的已分配實例。每調用一次,都會初始化並返回一個新實例,這對於在全局級別存儲數據沒有用處。因此更適合在班級內部使用。而且,這個實例的生命週期只有在其參考範圍出現之前纔有效。

此處瞭解詳情:Documentation

要訪問默認標準在模擬器/設備:link

1

使用standUserDefaults您正在使用應用程序的sharedInstance。使用alloc init可以使新用戶使用標識符進行默認設置。當我必須與我的應用的共享擴展共享數據時,我曾經使用過它。我將用戶默認值中的數據保存在我創建的標識符中,以便在我的共享擴展項目中訪問。

我相信一定有它更多的解釋,你可以看看這裏 https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/

1

[NSUserDefaults的standardUserDefaults]將使用Userdefaults的全局共享實例。

standardUserDefaults返回配置爲搜索當前應用程序的搜索列表的NSUserDefaults的全局實例。

[[NSUserDefaults alloc] init]會每次創建實例。

其更好地使用[NSUserDefaults的standardUserDefaults]

+0

因爲我讀userdefault存儲在文件的.plist如果我** ** standradUserDefault創建因此它是在訪問應用程序級別和如果我使用alloc init,它是否存儲在其他位置(不在同一個plist文件中) –

+0

不,它不會被存儲在同一個plist中。 –

0

基於NSUserDefaults.h說明,使用standardUserDefaults時,你會得到配置爲搜索當前應用程序的搜索列表的NSUserDefaults的一個全局實例。

雖然,如果您使用alloc init,您將需要一個套裝

-init相當於-initWithSuiteName:無

4
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; 

上面的行,通過使用類 方法給你singleton對象 standardUserDefaults通過該方法接收到的對象在整個分配的單個存儲器應用程序。

NSUserDefaults *userDefault = [[NSUserDefaults alloc] init]; 

這將讓你有新對象,每個物體分配一個不同的 存儲器中,即使對象範圍完成釋放。

如果你想存儲和使用整個應用程序的值,那麼它最好使用單獨的對象,當您刪除應用程序,將被釋放