NSUserDefault , Alloc init 与标准 Userdefault

NSUserDefault , Alloc init vs standard Userdefault

我很困惑

之间有什么区别

NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

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

谁能帮帮我......

提前谢谢

对于 standUserDefaults,您使用的是应用程序的 sharedInstance。使用 alloc init,您可以使用标识符创建新用户默认值。当我不得不与我的应用程序的共享扩展共享数据时,我使用过一次。我根据我创建的标识符将数据保存在用户默认值中,以便在我的共享扩展项目中访问。

相信一定会有更多的解释,你可以看这里 https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/

[NSUserDefaults standardUserDefaults] 将使用 Userdefaults 的全局共享实例。

standardUserDefaults returns NSUserDefaults 的全局实例,配置为搜索当前应用程序的搜索列表。

[[NSUserDefaults alloc]init] 每次都会创建实例。

最好使用[NSUserDefaults standardUserDefaults]

根据NSUserDefaults.h描述,当使用standardUserDefaults时,你会得到一个NSUserDefaults的全局实例,配置为搜索当前应用程序的搜索列表。

同时,如果您使用 alloc init,则需要一个 suitename

-init 相当于 -initWithSuiteName:nil

NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

the above line gives you the singleton object by using the class method standardUserDefaults the object received by this method is allocated single memory throughout the application.

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

this will gives you the new object, each object is allocated a different memory and deallocated when object scope is finished.

如果您想在整个应用程序中存储和使用该值,那么最好使用单例对象,当您删除应用程序时它将被释放

NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

这是一个 class 方法,将 return NSUserDefaults 的共享实例。因为它是一个共享实例。它是在全局级别存储数据以跨应用程序访问的理想场所。

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

这是一个实例方法,它将初始化 NSUserDefaults 的分配实例。每次调用它时,都会初始化一个新实例并 returned,这对于在全局级别存储数据没有用。因此更适合 intra-class 级别。此外,此实例的生命周期仅在其引用范围存在之前有效。

更多信息在这里:Documentation

要访问 Simulator/Device 中的标准默认值:link