gpt4 book ai didi

objective-c - 如何在 iOS 中立即释放内存?

转载 作者:行者123 更新时间:2023-12-01 18:02:03 26 4
gpt4 key购买 nike

当您进行释放时,您不会立即删除内存。我用了this code而且我可以看到使用释放前后的内存,它没有改变。好的,过段时间会发布。

但是,在启动将使用大量内存的库之前,我能做些什么来释放所有内存?或者我怎样才能立即释放内存?

最佳答案

内存管理在 iOS 中是一件大事,但这些信息在我的开发过程中帮助了我很多。

“每个对象都有一个“保留计数”,通过调用“保留”来增加,通过调用“释放”来减少。一旦保留计数达到 0,对象就会被释放,内存可以用于其他用途。

您可以“自动释放”对象。这意味着保留计数不会立即减少,而是会在下一次当前自动释放池耗尽时减少。

iOS 应用程序有一个事件循环,您的代码在其中运行。在事件循环的每次迭代之后,自动释放池被耗尽。任何保留计数为 0 的对象都会被释放。

默认情况下,自动释放的对象由不以 new、copy、mutableCopy、retain 或 init 开头的方法返回。这意味着您可以立即使用它们,但如果您不保留它们,则该对象将在运行循环的下一次迭代中消失。

如果您未能释放保留的对象但不再引用它们,那么您将发生内存泄漏,这可以通过 Instruments 中的泄漏工具检测到。

一种策略是自动释放上述命名方法返回的所有内容,并将对象存储在保留属性中(或复制字符串)。在对象的 dealloc 方法中,将所有属性设置为 nil。将保留/复制属性设置为 nil 会释放它当前指向的对象。只要您没有任何循环引用(通过不为“父”对象(例如委托(delegate))使用保留属性来避免),您就永远不会遇到任何泄漏。”

这是此信息的主题链接

http://www.quora.com/What-is-the-best-way-to-understand-memory-management-in-iOS-development

这是一个很好的线程,包含一些有用的代码示例以及其他引用资料。

关于objective-c - 如何在 iOS 中立即释放内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8186056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com