最新的iphone操作系统有GC吗?

发布于 2024-10-24 07:09:58 字数 112 浏览 0 评论 0原文

如果我们使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

玻璃人 2024-10-31 07:09:58

iOS 上没有垃圾收集。

我按照苹果在 文档

在垃圾收集环境中,
释放是一个无操作,所以除非你这样做
不想给收藏家一个提示
在任何情况下使用排水管都很重要
可以编译为的代码
垃圾收集环境。

no garbage collection on iOS.

I do what apple suggests in the documentation:

In a garbage-collected environment,
release is a no-op, so unless you do
not want to give the collector a hint
it is important to use drain in any
code
that may be compiled for a
garbage-collected environment.

汐鸠 2024-10-31 07:09:58

在 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文