zoukankan      html  css  js  c++  java
  • Swift中 堆(heap)和栈(stack)的区别

    1、内存空间分为堆空间和栈空间

    2、堆->引用类型(对象、函数、闭包)  栈->值类型(结构体、枚举、元组)

    3、值类型赋值->深拷贝  引用类型赋值->浅拷贝  

    let a = 1
    let c = a
    // 值类型赋值会生成一个全新的c
    // 引用类型赋值则是指向之前的对象的内存地址

     4、结构体与类的区别

    // 结构体
    struct personT{
        var  age = 10
        var name = "小明"
    }
    
    var pt = personT()
    var pt1 = pt
    pt1.age = 20
    print(pt.age) //10
    
    //
    class personC{
        var  age = 10
        var name = "小明"
    }
    let pc = personC()
    let pc1 = pc
    pc1.age = 30
    print(pc.age)//30
    /* 分析
     定义两个模型,一个是结构体,一个是类
     结构体是存在于栈中的值类型,赋值相当于深拷贝即拷贝一个全新的模型
     类是存在于堆中的引用类型,赋值相当于浅拷贝之前模型的内存地址<所以定义模型时可以用let 定义 定义pc其实是personC() 的内存地址 - 后续修改也是拿到内存地主对应的模型进行修改>
     swift建议都使用struct, swift对结构体已经进行了很大的优化
     */
  • 相关阅读:
    python 17 函数基础(一)
    python 17 异常
    python 16 文件操作(二)
    python 15 文件操作(一)
    python 13 字符编码
    《转》python 12 列表解析
    《转》python 11 表达式和语句
    关于int型数据的SQL模糊查询猜想
    PB学习笔记
    JSONObject.fromObject()
  • 原文地址:https://www.cnblogs.com/ZhangShengjie/p/14293010.html
Copyright © 2011-2022 走看看