1

每次我编写一个新的 iPhone 应用程序时,我都会从创建目标开始,添加框架,然后在一个全新的 main.m 中编写它:

NSAutoReleasePool *pool = [[NSAutoReleasePool alloc] init];
// etc...

这样的游泳池究竟是什么?它是干什么用的?当它掉进游泳池时,它肯定不会保护设备。但为什么会在那里?我需要吗?它是有用的还是邪恶的?谢谢

4

2 回答 2

4

NSAutoreleasePool 负责处理无主对象并在池被释放时释放它们。我建议您阅读有关该主题的文档

举个例子:

  • 您创建一个 NSAutoreleasePool。
  • 您的代码正在调用将返回一个对象的方法。
  • 在该方法中,您创建了一个对象,但您不想保留其所有权。所以你向这个对象发送一条autorelease消息,上面写着:“我不再拥有这个对象了”。池现在负责处理该对象。请注意,即使对象不是自己的,也不会被释放。
  • 在调用代码中,您将获得结果对象。由于对象还活着,您可以使用它。
  • 当池被释放时,对象将被释放。
于 2010-06-27T07:36:57.230 回答
1

自动释放池是您可以想到的一个对象,它捕获了所谓的“自动释放”,当池耗尽(发送drain消息)时,池中的每个对象都会发送一个 -release 方法。

于 2010-06-27T07:18:48.587 回答