NSUserDefaults standardUserDefaults - 这个代码在Objective-C中做了什么?

时间:2016-11-27 14:43:07

标签: objective-c macos nsuserdefaults

我正在尝试理解一些代码,我想知道这个代码在OS X应用程序上做了什么:

[[NSUserDefaults standardUserDefaults] retain]

它被设置为变量。我想知道它是否收集有关系统的信息。我试图在虚拟机中运行一个应用程序,但它不会让我和我试图分析代码来查看原因,但我不知道Objective-C。

1 个答案:

答案 0 :(得分:0)

所以在ARC(自动引用计数)出现之前,你会看到retainrelease到处都是。

分配对象时,必须retain来增加保留计数。如果您曾调用release,则会减少保留计数。如果保留计数达到0,则对象被释放,-dealloc将被称为

现在使用ARC,根据您的对象(retainrelease的属性编译strongweak指令,您可以阅读更多相关内容在这里:Objective-C ARC: strong vs retain and weak vs assign

无论如何,正如danh所说,你的那条线路没有做任何事情。因为[NSUserDefaults standardUserDefaults]是单身,所以增加保留计数是没有意义的,因为没有威胁它从你身下释放。
虽然我不认为将standardUserDefaults分配给本地指针是最奇怪的事情,但每次需要标准默认值时访问单例也同样有效