【问题标题】:Will declaring the same var over and over in Swift build memory?会在 Swift 构建内存中一遍又一遍地声明相同的变量吗?
【发布时间】:2015-09-11 03:32:57
【问题描述】:

我正在快速编写代码,并且很好奇如果我在迭代的循环内或循环外声明变量将如何工作。

示例 1:

loop {

  var x = 1

  do something with x

}

示例 2:

var x = 1

loop {

  do something with x

}

第一个会继续创建引用 x 的东西吗?或者两者在记忆上不会有什么不同?

【问题讨论】:

    标签: ios swift variables memory


    【解决方案1】:

    示例 1:

        loop {
    
          var x = anyobject
    
          do something with x
    
        } 
    

    创建 x,然后在每个循环中释放 x

    示例 2:

    var x = anyobject
    
    loop {
    
       do something with x
    
    }
    

    循环内的 x 与循环外的 x 具有相同的内存。不创建/释放每个循环或循环结束

    【讨论】:

    • 我假设如果 X 是 UIImage 或类似对象的东西,情况相同?
    • 你的意思是 x = 对象吗?
    • 将 X 声明为 UIImage
    【解决方案2】:

    示例 1:

    在每个循环中保留 alloc 变量 x 和 dealloc 变量 x。每个人的值相同,但指针不同。

    您可以在每个循环中处理相同的 VALUE。但您无法访问循环外的 x。

    示例 2: 在每个循环开始时,x 的值可能会发生变化。

    您在每个循环中处理相同的 POINTER。您可以在循环外访问 x。

    【讨论】:

    • 内存有什么区别,如果有的话?每次在第一个指针中处理一个新指针会导致内存增加吗?
    • 没有。内存不会建立。看看这个关于自动变量的维基:en.wikipedia.org/wiki/Automatic_variable
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 2023-01-20
    • 2016-12-20
    相关资源
    最近更新 更多