最新的iphone操作系统有GC吗?
如果我们使用 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];那么使用什么方法,对于最新的iOS,要么是drain,要么是release。
If we use NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; then what method is used, either drain or release for lates iOS.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
iOS 上没有垃圾收集。
我按照苹果在 文档:
no garbage collection on iOS.
I do what apple suggests in the documentation:
在 iOS 上,当 NSAutoreleasePool 超出其定义的范围时(只要没有保留其他引用),它就会耗尽。在排水过程中,它会释放它所持有的所有物体。
因此,调用release可能会导致耗尽,只要它是对池的最后一个引用。
这与传统的 GC 不同,传统的 GC 收集器不受范围限制,并且通常独立于主应用程序代码流工作。
On iOS NSAutoreleasePool will drain when it goes out of the scope where it is defined (as long as no other reference is held). During the drain, it will release all objects held by it.
Thus, calling release might result in a drain, as long as it's the last reference to the pool.
This is different from the traditional GC where the collector is not scope bound and in general works independently of the main app code flow.