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

深拷贝和浅拷贝/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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值