ObjC 基础-copy与mutableCopy的区别与用法(Foundation框架自带有区分可变/不可变能力类与其他没有区分能力类在拷贝本质上的区别)

Objc 基础-copy与mutableCopy的区别

用过文本拷贝的小伙办都知道吧,假定A文本的内容是一封情书,拷贝生成B文本那也是一封情书,和A文本的内容是一致的,修改B文本对A文本是没有任何影响的,同样修改A文本对B文本也没有影响,这两个文件是独立存在互不影响的。开发中的拷贝也是一样的道理。

拷贝的特点是什么?产生一个副本对象,副本对象与源对象互不影响。

  • 修改副本对象不影响源对象。
  • 修改源对象不影响副本对象。
  • 拷贝只适用于那些遵循NSCopying或NSMutableCopying协议的对象类型,继承自NSObject的子类都满足

拷贝方法分两种:copymutableCopy

严格来讲mutableCopy操作是只给Foundation框架自带的一些类去做事情的,只有他们才有区分产生可变或不可变的权利,如:字符串、字典、数组等;其他类是没有的,如:自定义类、UIKit中的类等
只要是遵循NSCopying或NSMutableCopying协议的对象类型都具备拷贝能力,所以,只要是继承自NSObject的类都可以调用mutableCopy。

拷贝在底层怎么进行内存管理的?

  • MRC环境下 当调用allocnewcopymutableCopy方法返回了一个对象,在不需要这个对象时,要调用release或者autorelease来释放它;
  • ARC环境下 编译器会自动进行内存管理,了解MRC环境下怎么进行内存管理,有助于开发理解。

是否具备具备区分可变/不可变的能力?

  • 一般只有Foundation框架自带的一些类才具备区分可变/不可变的能力,如:字符串、数组、字典等。
    • copy和mutableCopy,使用有区别,返回可能是可变/不可变的对象。
    <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值