2014-02-18 204 views
0
Class __weak *variable = preExistingObjectWithStrongReference; 

如果上面的代碼被調用,並具有較強的參考對象,然後通過一個新的指針「變量」指出,與__weak屬性__weak要做的就是分配給它...什麼在這種情況下

這是否僅僅意味着引用計數保持不變?或者是否意味着原始對象現在不再是強引用?

回答

1

__weak指定不保持被引用對象的引用。當沒有強對象的引用時,弱引用設置爲零。

這意味着,你可以使用變量安全,只要有任何其他強引用同一個對象。從某種意義上說,你可以把它想象爲「引用計數保持不變」,正如你所說的那樣。

1

兩者都不;這意味着只要其他人強烈指向,編譯器將保持參考活動。如果沒有更強的引用,並且指向您的指針的所有對象都消失,則會釋放該對象。一般而言,您只能在不屬於您的對象上使用weak。如果你確實擁有它們(即它是「屬於」該類的東西),那麼strong是更好的選擇。 A weak本質上是一個不存在的屬性,除了釋放對象時,弱指針自動設置爲零。