使用@autoreleasepool并发送autorelease消息

时间:2012-12-08 08:11:15

标签: objective-c

我正在学习Objective-c并希望澄清一件事: 当我使用autoreleasepool时,我应该在使用测试对象后发送自动释放消息吗?

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

1 个答案:

答案 0 :(得分:1)

  

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

他们没有任何相关性。

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

如果您正在使用ARC(我认为不是这种情况,因为您发送了autorelease消息),那么在简单的情况下您根本不必担心释放对象。 (如果你必须使用更先进的内存管理和更复杂的模型,那么ARC比MRC更复杂,但无论如何......)

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

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