浅拷贝和深拷贝
对象的(指针指向)内存地址
浅拷贝:
第一,拷贝了指向对象的指针,拷贝出来的对象的指针和原对象的指针指向同一块内存地址.
第二,几个对象共用一块内存,当内存被回收时候,指向这块内存的对象指针需要重新定义,不然会造成野指针错误.
深拷贝:
第一,拷贝对象的具体内容,开辟新的内存,内存地址自助分配.
第二,拷贝完成之后,内存中的值是一样的,但是内存地址不一样,2个对象之间相互不影响,也不相互干涉;
小结:用通俗话来讲,
浅拷贝就是一个人和他的影子,本体被销毁了,那么影子也不存在;
深拷贝就好比一个人和他的克隆人,本体被销毁了,克隆人依然存在;
额外知识:
野指针:当前对象指针指向的内存已经被回收,但是依然有其他对象的指针指向这块内存,那么指向这块内存的对象指针就是野指针;
内存泄漏:申请内存没有释放,造成内存越来越少;常见是block,delegate,NSTimer的使用不当造成的循环引用;