2012-08-08 66 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应该会导致问题,因为它会释放两次。

当池被排空时,自动释放的对象被取消。