2016-11-27 92 views
-1

我想了解一些代码,我想知道这个代码在OS X应用程序的内容:NSUserDefaults standardUserDefaults - 这段代码在Objective-C中做了什么?

[[NSUserDefaults standardUserDefaults] retain] 

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

+0

这是没有意义的时候访问单一样有效告诉。 standardUserDefaults是一个单例,因此即使在将它分配到某处的奇怪情况下也不会保留。 – danh

+0

@danh为什么把它分配到一个奇怪的环境? – Willeke

+0

它可以通过'[NSUserDefaults standardUserDefaults]'来访问任何地方。 – danh

回答

0

所以在ARC(自动引用计数)是一件事情之前,你会在任何地方看到retainrelease

当你分配一个对象时,你必须retain它来增加保留计数。如果您曾拨打release,则会减少保留计数。如果保留计数不断命中0,对象被释放,-dealloc将与ARC被称为

现在,retainrelease指令编译,基于把你对象的属性(strongweak),你可以阅读更多关于这里:Objective-C ARC: strong vs retain and weak vs assign

无论如何,指出你的路线,如丹说的,什么也不做。因为[NSUserDefaults standardUserDefaults]是一个单身人士,所以增加保留计数没有意义,因为没有任何威胁将它释放出来。
虽然我不认为这是对standardUserDefaults分配给本地指针最奇特的地方,它会尽可能我可以在每次所需的标准默认

+1

不,每次调用'[NSUserDefaults standardUserDefaults]'都不是一样有效。调用方法是无效的。 – Willeke