7

我的问题可能听起来很愚蠢,但我想知道如果我将自动释放的对象标记为自动释放会发生什么。会发布两次吗?还是什么都没发生?例如:

 Obj * obj = [[Obj create] autorelease];

假设[Obj create]返回一个自动释放的对象。
如果我添加另一个自动释放,那么会发生什么?

4

2 回答 2

5

是的,发送autorelease两次将释放对象两次。如果您的create方法返回一个自动释放的对象并且您向autorelease它发送另一条消息,您的应用程序将崩溃,因为您将释放一个已释放的对象。

话虽如此,您为什么不使用新的自动引用计数(ARC)?您不必再担心(自动)释放对象了。

于 2012-09-18T23:44:56.100 回答
-2

您使用类方法(+),您不应该关心内存。人们使用 Class Method 的一个原因是它可以返回一个自动释放对象。如果你释放或自动释放类方法返回的对象,它会崩溃。

于 2012-09-19T03:01:53.933 回答