2016-11-27 64 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