0
我是Objective-C的新手,並想了解更多關於基於非弧的編程,特別是覆蓋賦值,保留和複製的setter。有人能幫助我嗎?並且請簡要介紹一下這個過程。覆蓋setter分配,保留和複製
我是Objective-C的新手,並想了解更多關於基於非弧的編程,特別是覆蓋賦值,保留和複製的setter。有人能幫助我嗎?並且請簡要介紹一下這個過程。覆蓋setter分配,保留和複製
下面是每個的簡要說明:
分配是默認設置,簡單地執行可變分配。它沒有聲明所有權,因此如果沒有其他人通過保留或其他方式自己聲明所有權,那麼屬性指針所指向的對象可能隨時消失。
- (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];
}
}
我還要注意,幾乎沒有理由不使用弧。
是的,我知道使用ARC會減少很多工作,並且更乾淨。但我想澄清一下內存管理的概念。我也想知道保留和複製到底是什麼。 – user3008132
好的答案,我很佩服提問者想要了解內存管理是如何工作的。它有助於使用ARC知道在 – Accatyyc
之下發生了什麼,它還有助於理解非ARC友好的基礎對象。當新人學習可可時,應該要求記憶管理。道具 :) – migs647