我正在学习objective-c,我想澄清一件事:当我使用自动释放池时,我应该在使用测试对象后发送自动释放消息吗?
for (int i = 0; i < 10; ++i)
{
@autoreleasepool {
TestClass* tc1 = [[TestClass alloc] init];
//....... do some stuff with tc1
[tc1 autorelease];
}
}
当我使用自动释放池时,我应该在使用测试对象后发送自动释放消息吗
它们没有任何相关性。
你应该做什么取决于你想做什么,以及你是否使用自动参考计数。
如果您正在使用ARC(我认为情况并非如此,因为您发送了autorelease
消息),那么在简单的情况下根本不必担心释放对象。(如果你必须对更复杂的模型使用高级内存管理,那么ARC甚至比MRC更复杂,但无论如何…)
如果您不使用ARC,有两种选择。autorelease
允许在最内部作用域的自动释放池的末尾释放对象。因此,在您提供的示例中,可以这样做。
然而,自动释放主要是为了在从方法/函数返回对象时处理所有权,通常,当您不再需要release
消息时,您希望显式地向已分配的初始化对象发送该消息。