0

我正在学习objective-c并想澄清一件事:当我使用autoreleasepool时,我应该在使用测试对象后发送一条autorelease消息吗?

for (int i = 0; i < 10; ++i)
{
    @autoreleasepool {
        TestClass* tc1 = [[TestClass alloc] init];
        //....... do some stuff with tc1
        [tc1 autorelease];
    }
}
4

1 回答 1

1

当我使用自动释放池时,我应该在使用测试对象后发送一条自动释放消息吗

它们没有任何相关性。

您应该做什么取决于您想要做什么以及您是否使用自动引用计数。

如果您使用的是 ARC(我认为并非如此,因为您发送了一条autorelease消息),那么您根本不必担心在简单的情况下释放对象。(如果你必须对更复杂的模型使用高级内存管理,那么 ARC 甚至比 MRC 更复杂,但无论如何......)

如果您不使用 ARC,则有两种选择。autorelease让一个对象在最内层自动释放池的末尾被释放。所以在你提供的例子中,这样做是可以的。

但是,自动释放的主要目的是在从方法/函数返回对象时处理所有权,并且通常,您希望在release不再需要时显式地向已分配初始化的对象发送消息。

于 2012-12-08T08:20:43.480 回答