我正在尝试理解一些代码,我想知道这个代码在OS X应用程序上做了什么:
[[NSUserDefaults standardUserDefaults] retain]
它被设置为变量。我想知道它是否收集有关系统的信息。我试图在虚拟机中运行一个应用程序,但它不会让我和我试图分析代码来查看原因,但我不知道Objective-C。
答案 0 :(得分:0)
所以在ARC(自动引用计数)出现之前,你会看到retain
和release
到处都是。
分配对象时,必须retain
来增加保留计数。如果您曾调用release
,则会减少保留计数。如果保留计数达到0,则对象被释放,-dealloc
将被称为
现在使用ARC,根据您的对象(retain
,release
的属性编译strong
和weak
指令,您可以阅读更多相关内容在这里:Objective-C ARC: strong vs retain and weak vs assign
无论如何,正如danh所说,你的那条线路没有做任何事情。因为[NSUserDefaults standardUserDefaults]
是单身,所以增加保留计数是没有意义的,因为没有威胁它从你身下释放。
虽然我不认为将standardUserDefaults
分配给本地指针是最奇怪的事情,但每次需要标准默认值时访问单例也同样有效