为什么要排出自动释放池而不是释放它?

Mat*_*rix 3 iphone macos cocoa objective-c

为什么要排出自动释放池而不是释放它?

cob*_*bal 5

一个原因是垃圾收集(在iPhone上不可用)

release是一个启用GC的无操作,但drain提供了垃圾收集器的提示

来自文档:

垃圾收集

在垃圾收集环境中,不需要自动释放池.但是,您可以编写一个框架,该框架旨在在垃圾收集和引用计数环境中工作.在这种情况下,您可以使用自动释放池向收集器提示该集合可能是合适的.在垃圾收集环境中,如果需要,向池中发送排泄消息会触发垃圾回收; 然而,释放是一种无操作.在参考计数环境中,排水与释放具有相同的效果.因此,通常应使用排水而不是释放.

  • 回到白天,排水和排水是分开的.你不得不打电话给排水,然后释放.然而,由于你总是排水然后释放他们只是结合排水.我认为它们一直在流失,因为手动内存管理过去非常重要,你需要能够准确地找到代码中池的耗尽位置. (2认同)