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