2013-12-19 62 views

回答

3

下面是每個的簡要說明:

分配是默認設置,簡單地執行可變分配。它沒有聲明所有權,因此如果沒有其他人通過保留或其他方式自己聲明所有權,那麼屬性指針所指向的對象可能隨時消失。

- (void) setAssignProperty:(id)newValue 
{ 
    self->assignProperty = newValue; 
} 

保留指定新的值應在分配和舊值發送釋放發送-retain。保留也被認爲是強大的。方法保留增加對象上的retainCount(直到retainCount爲0,對象纔會被釋放)。

-(void)setRetainProperty:(id)newValue 
{ 
    if (retainProperty != newvalue) 
    { 
     [retainProperty release]; 
     retainProperty = [newValue retain]; 
    } 
} 

副本指定新的值應在分配和舊值發送釋放發送-copy。複製創建對象的新實例。

-(void)setCopyProperty:(id)newValue 
{ 
    if (copyProperty != newvalue) 
    { 
     [copyProperty release]; 
     copyProperty = [newValue copy]; 
    } 
} 

我還要注意,幾乎沒有理由不使用

+0

是的,我知道使用ARC會減少很多工作,並且更乾淨。但我想澄清一下內存管理的概念。我也想知道保留和複製到底是什麼。 – user3008132

+0

好的答案,我很佩服提問者想要了解內存管理是如何工作的。它有助於使用ARC知道在 – Accatyyc

+0

之下發生了什麼,它還有助於理解非ARC友好的基礎對象。當新人學習可可時,應該要求記憶管理。道具 :) – migs647