2012-08-08 38 views
0

我有一些關於autorelease功能的問題。它是否有任何意義或價值調用保留或釋放自動釋放對象?

請諮詢..

Q1)是否有任何關於呼籲保留或釋放到自動釋放對象的意義或價值?

ex1) 
UIView *viewTest = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 400)] autorelease]; 
[self.view addSubview:viewTest]; 

在這種情況下,viewtest對象將來會被釋放嗎? 或者需要添加一行'[viewTest release];'?

EX2)

UIView *viewTest = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 400)] autorelease]; 
[viewTest release]; 

在這種情況下,viewTest將自動釋放? Q2)自毀對象在哪裏銷燬?

回答

0

Q1)是否有任何意義或價值調用保留或釋放自動釋放對象?

不是真的,當autoreleasepool被排空時,對象會被釋放。看看this

Q2)自毀對象在哪裏被銷燬?

NSAutoreleasePool被排出的自動釋放物體被破壞,或在@autoreleasepool構建體,其基本上做同樣的事情的結束。

0

autorelease適用於您需要的情況。從方法返回一個對象,所以調用者在使用後不需要釋放它。

您的ex2應該會導致問題,因爲它會釋放兩次。

當池被排空時,自動釋放的對象被取消。