深拷贝和浅拷贝:strong与 copy 区别

来源:互联网 发布:linux降低用户权限 编辑:程序博客网 时间:2024/05/16 12:43

深拷贝和浅拷贝/strong与 copy 区别

====

  • 1.深拷贝是内容的拷贝,浅拷贝只是指针的拷贝,浅拷贝使指针 retain 一次,对于不可变数组(或 string 或 dictnory)的 copy 操作是浅拷贝,对不可变数组(或同上。)的 multyCopy 操作同对可变数组(或同上)的 copy 和 multyCopy 操作都是深拷贝
    • 1.1 不可变数组经过 copy 操作之后,仍具有修改 copy 后副本,不影响原件的功能,原理是,修改不可变数组,会开辟新的存储空间,存储新的值,所以不会影响原件的值
  • 2.static 会使变量在内存中保留一个位置,拿到这个变量时,不再会初始化,对于全局变量的 static,可以防止外界的修改等不安全的行为,访问外界的全局变量:extern
  • 3.类的 copy 如何实现
    • 类遵守协议
    • 重写 copyWithZone 方法,在方法中,创建一个新对象,将对象的属性进行赋值
  • 4.属性 strong 与 copy 的区别

    • 4.1@property(strong) NSString * name;
      _name = string = @”123”;
      当 string = @”456”;
      _name = @”456”;
      也就是_name 随着 string 的改变而改变

    • 4.2@property(copy) NSString * name;
      copy 不会受到 string 的改变而改变
      这里写图片描述

  • 5.
    • 这里的 name 虽然是可变的,但是 copy 后是不可变的,不可变数组不能使用 Appending xxx方法:
    • 这里写图片描述
0 0
原创粉丝点击