2012-01-27 75 views
0

我正在閱讀Apple的基本內存管理規則文檔。我遇到了一句話:「任何物體都可能有一個或多個所有者。」2個所有者的對象

這是什麼意思?擁有2個所有者的對象。 我並不十分熟悉OOP的概念。

回答

3

在內存管理中,如果一個對象擁有對另一個對象的引用,它將保留它。

多個對象可以保留一個對象,當對象上沒有保留時,沒有人擁有它並且它消失。保留增加引用計數,並且發佈將其遞減。

一個很好的比喻是給寵物添加皮帶。多人可以添加皮帶,但如果沒有人有皮帶,它可以消失:)

如果您要使用一個對象的引用,而不是直接函數,您將得到參考,然後你應該保留它。如果你調用alloc,複製mutableCopy來獲取引用,那麼你只保留它。如果你通過另一個消息名稱得到它,那麼標準是自動發佈的(這很好),並且將在該函數的範圍之外的某個將來的某個時刻離開。

+0

我喜歡「皮帶」類比! – zaph 2012-01-27 12:43:56

2

「擁有」他們的意思是「有一個參考。」。 iOS內存管理是顯式的,它是通過引用計數完成的。發送給對象的「保留」消息增加了引用計數,「釋放」消息減少了引用計數。當引用計數達到0時,該對象被釋放(並首先發送「dealloc」消息)。這適用於NSObject層次結構中的對象。

因此,當一個對象被交給一個對象的引用時,它將來會在某個時間繼續使用,該對象會保留指向該對象的指針的副本並向其發送「保留」消息,以便當「所有者」想要訪問它時,該對象將不會被釋放。

相關問題