ios - 为什么以及什么时候我们需要在ios项目中使用@autoreleasepool

标签 ios objective-c memory-management automatic-ref-counting nsautoreleasepool

<分区>

我看了很多关于@autorelease pool的博客,但是我仍然不清楚在objective c或ios开发中这个@autorelease pool的概念。

所以任何人都可以阐明这个概念。 如果有人能给我提供一个示例以及何时需要使用@autorelease pool,那将对我非常有帮助。

如何使用@autorelease pool 和不使用它来测量内存分配。

请说明这个主题可能是重复的。

最佳答案

Release 和Autorelease 是内存管理相关的术语。每当您拥有一个对象时,您就有责任释放它。如果你没有正确地释放它,Objective-C 不能回收它以供其他对象使用,就会出现内存泄漏。

拥有对象的不同方式是 alloc、new、retain 和 copy 每当你使用这个东西时,尝试释放它,这样 Objective C 就会小心地破坏那个对象。如果您不确定是否释放该对象,请确保执行自动释放。

每当你对一个对象进行自动释放时,如果对象没有以正确的方式释放,它就会被添加到 main 函数中的 Autoreleasepool 中。 main 函数中的 Autoreleasepool 会维护一堆待释放的对象,当调用“drain”方法时,它们会一个一个释放,例如:[pool drain]。在每个事件循环结束时重复调用 Drain 方法。

关于ios - 为什么以及什么时候我们需要在ios项目中使用@autoreleasepool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36856747/

相关文章:

ios - 如何将按钮添加到 ios TableView 行

ios - 在 UITableView Objective-C 中实现 UISearchController

java - 就地复制位图会泄漏内存吗?

ios - 如何从键盘上删除顶部栏?

ios - 不包括 Crashlytics,但将 dSYM 上传到 Fabric

objective-c - 将 NSData Objective-C 代码转换为 Swift 时遇到问题

ios - 透明背景 UIView drawRect 圆形

c - 为什么这只读取 n-1 个字符串?

ios - 从 'requestImageForAsset' 返回的 UIImage 大小甚至不接近 'targetSize' 设置

javascript - 使用深层链接在 native react 中打开邮件应用程序