ios - 在 iOS 应用程序的生命周期中何时触发 ARC?

标签 ios memory-management automatic-ref-counting

<分区>

iOS中使用了ARC,当引用计数为0时,会自动释放一个对象。在swift book的例子中,代码将一些var设置为nil,以使引用计数为0。在一个真正的 iOS 应用程序,除非对象非常大,否则我可能不会故意将某些内容设置为 nil 来释放内存。

我的问题是,ARC 中的释放会在应用的生命周期中何时发生?我正在考虑两种情况:

  1. 如果我们从一个 viewcontroller 转到下一个 viewcontroller,第一个 viewcontroller 会自动释放吗?假设我们不在下一个 View Controller 中保留副本。

  2. 如果 iOS 以某种方式杀死了我们的应用程序,说它需要内存或其他东西,它是否只是清除我们应用程序使用的所有内存?或者它将某些东西设置为 nil 并触发 ARC 来完成工作?如果代码中存在一些强引用循环,这种情况下会不会出现内存泄漏?

最佳答案

  1. 这里已经回答过了,如果第一个 View Controller 推送/呈现另一个 Controller ,它不会被释放。
  2. 如果 iOS 终止您的应用程序,您的应用程序占用的所有内存都将被释放。所以接下来当你打开你的应用程序时,它将是一个全新的启动。还有一种称为内存警告的东西,当设备内存不足或您的应用程序消耗大量内存时,操作系统会发出内存警告。实现 didReceiveMemoryWarning 方法并释放任何未使用的数据或资源。它可以避免您的应用被操作系统杀死。

关于ios - 在 iOS 应用程序的生命周期中何时触发 ARC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31592100/

相关文章:

ios - Monotouch 内存 View Controller 问题

ios:如何通过电子邮件将链接发送给将打开移动应用程序而不是网页的用户?

c - 将数组的内存分配给 char 指针

c++ - auto_ptr 的动态内存分配

iphone - 根据内容更改单个 UITableViewCell 的外观

c - 数组和链表之间的内存使用

ios - 弹回 View Controller 时使用 ARC 的 EXC_BAD_ACCESS

iphone - _var 和 self.var 的区别

c++ - 将 __bridge cast 与 static_cast 结合使用的语法是什么?

ios - 我是否需要 Mac 来开发 Azure Xamarin.iOS 应用程序?