因为如果main()创建一个NSAutoreleasePool并在程序退出之前将其清空,那么即使它可以防止内存泄漏,整个过程的内存空间还是会被释放-如果我们释放了,这很重要小块,如果下一整块都被释放了?实际上,如果它继续在小片段上工作,会不会导致程序退出速度变慢?

drain可以调用release,而后者又调用dealloc,但是如果dealloc仅用于释放内存,而没有其他东西(例如关闭文件),则drain将无助于释放记忆)

最佳答案

最好在可能的情况下清理自己,而不是依赖环境为您完成清理。如果您担心的只是内存使用情况,那么不,最严格的池并不是绝对必要的-但这不是您唯一需要考虑的事情。对象可能会执行其-dealloc方法中的可用内存以外的其他操作(例如,将文件刷新到磁盘,释放稀有的OS资源或释放在进程退出时不会返回给系统的资源)。

当对象在没有池的情况下自动释放时,更不用说控制台垃圾邮件了。

10-08 02:43