0

我有一些关于自动释放功能的问题。

请指教..

Q1) 对自动释放的对象调用保留或释放是否有任何意义或价值?

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

在这种情况下,将来会释放 viewtest 对象吗?还是需要加一行'[viewTest release];'?

例 2)

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

在这种情况下,viewTest 会自动释放吗?

Q2) 自动释放的对象在哪里被销毁?

4

2 回答 2

0

Q1) 对自动释放的对象调用保留或释放是否有任何意义或价值?

并非如此,无论如何,当自动释放池耗尽时,对象就会被释放。看看这个

Q2) 自动释放的对象在哪里被销毁?

自动释放的对象在NSAutoreleasePool耗尽时或在@autoreleasepool构造结束时被销毁,这基本上做同样的事情。

于 2012-08-08T12:34:45.890 回答
0

autorelease被认为适用于例如从方法返回对象的情况,因此调用者不需要在使用后释放它。

你的 ex2 应该会引起问题,因为它确实释放了两次。

当池被耗尽时,自动释放的对象被销毁。

于 2012-08-08T12:36:35.767 回答