2010-11-12 79 views
0

我有被聲明的屬性爲:正在釋放一個屬性

@property(nonatomic,retain) DateClass *dateClass; 

我有這樣的一段代碼,我需要一個新的實例複製到其中:

//Do I need to release dateClass here first before assigning new instance? 
self.dateClass = [self getOtherDateClass]; 

... 
-(DateClass*) getOtherDateClass 
{ 
    DateClass *dateClass = [[[DateClass alloc]init]autoRelease]; 

    return dateClass;   
} 

我需要釋放self.dateClass,然後將其設置爲自動釋放的新實例,或者是已合成的屬性爲我執行此操作?

回答

2

不是。使用retaincopy聲明的@property會爲您釋放舊對象,假設您使用該屬性的合成設置器。

+0

好吧,但是在分配前自動釋放新對象是明智的嗎?是否有可能autorelease太快踢,使我的類對象無效? – Oysio 2010-11-13 16:28:49

+0

直到runloop的當前迭代結束,Autorelease纔會啓動,因此除非用自己的autorelease池自己做一些東西,否則不必擔心它會在「早期」踢worry。 – 2010-11-15 21:10:13