【问题标题】:How swift manages memoryswift如何管理内存
【发布时间】:2019-04-05 13:25:20
【问题描述】:

我在快速“A”和“B”中有两个视图控制器。让我在 A 中有一些变量。所以在初始化之后,它存储在内存区域中。然后发生了什么,当我移动到 B 视图控制器时。内存被释放还是还在内存空间中?

【问题讨论】:

  • when i moved to B view controller — 究竟如何?不同的转换可能会以不同的方式工作。另外,不是swift memory management,而是UIKit架构问题。
  • 不确定移到 B 是什么意思? ..您的意思是从 A 向 B ViewController 呈现?
  • Swift 像 Objective-C 一样工作,具有引用计数。每个强引用都会增加计数。弱引用没有。如果 A 和 B 都具有强引用,则不会释放内存。如果只有 A 视图控制器有引用,并且 A 视图控制器被释放,则内存被释放。
  • 这个问题很不清楚。内存可以是静态的、堆栈的或堆的。根据变量的类型(全局、实例、本地)和存储到其中的值的类型(字符串文字、值类型、引用类型),这可能会有不同的答案。

标签: ios swift memory-management


【解决方案1】:

只要视图控制器 A 仍然存在于视图控制器层次结构中,它仍将被强引用,并且它强引用的任何变量仍将在内存中。

如果您之前已呈现 A,然后又将其关闭,则 A 及其变量可能没有强引用并且不再存在于内存中。

【讨论】:

    猜你喜欢
    • 2015-03-13
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 2016-03-20
    • 1970-01-01
    相关资源
    最近更新 更多