堆栈及深拷贝浅拷贝

什么是堆栈?

堆:队列优先,先进先出;由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈

栈:先进后出;动态分配的空间 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表

基本类型:基本类型即有固定大小的类型,如Number,String,Undefined,Null,Boolean这种类型,

引用类型:引用类型为没有固定大小的类型,我们可以改变他的固定大小,如Object,他在栈中存了内存地址,然后指向堆内存中值


const

const定义的是一个常量,这个常量指的是内存地址不动(也就是栈里的不动),如果是引用类型的数据,它的堆里的数据还是可以改变的

浅拷贝与深拷贝

浅拷贝:复制所考虑的对象,而不复制它所引用的对象

如果改变person1属性friends里的值,person2也会跟着改变

深拷贝:深拷贝把要复制的对象所引用的对象都复制了一遍


person1和person2所有的值都不相关了

具体实现方法

逐个复制或者递归和object,creted()

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,794评论 1 32
  • 内存管理 简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与a...
    丶逐渐阅读 6,052评论 1 16
  • 最全的iOS面试题及答案 iOS面试小贴士 ———————————————回答好下面的足够了-----------...
    zweic阅读 7,597评论 0 73
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 6,086评论 0 12
  • 1.设计模式是什么? 你知道哪些设计模式,并简要叙述?设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型...
    龍飝阅读 6,575评论 0 12