【发布时间】:2011-03-22 09:21:35
【问题描述】:
如果我们使用 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];那么使用什么方法,对于最新的iOS,要么耗尽,要么释放。
【问题讨论】:
标签: iphone garbage-collection autorelease
如果我们使用 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];那么使用什么方法,对于最新的iOS,要么耗尽,要么释放。
【问题讨论】:
标签: iphone garbage-collection autorelease
iOS 上没有垃圾收集。
我按照苹果在documentation 中的建议:
在垃圾收集的环境中, release 是无操作的,所以除非你这样做 不想给收藏家一个提示 在任何情况下使用排水很重要 可以编译的代码 垃圾收集环境。
【讨论】:
在 iOS 上,NSAutoreleasePool 会在它超出定义的范围时耗尽(只要没有其他引用被持有)。在吸取过程中,它会释放它持有的所有物体。
因此,调用 release 可能会导致耗尽,只要它是对池的最后引用。
这与传统的 GC 不同,后者的收集器不受范围限制,并且通常独立于主应用程序代码流工作。
【讨论】: