iOS 工作之余小总结(三) 拷贝----浅拷贝,深拷贝(copy),引用计数拷贝及区别

  在iOS中,我们有时要用到copy的方法。对对象进行拷贝。今天总结了一下拷贝。

1)iOS拷贝都有哪些?

  拷贝有三种:浅拷贝,引用计数拷贝,深拷贝。接下来我一一总结。先码后理。

  1、浅拷贝

FYWork *w = [[FYWork alloc] init];

__weak FYWork *w1 ;

w1 = w;

w1浅拷贝w 前面用__weak关键字修饰,只是指向w所开辟的空间,但是不持有这块空间。RC值为1.所以当w指针释放的时候,w1的指针变为nil。


  2、引用计数拷贝

FYWork *w = [[FYWork alloc] init];

__strong FYWork *w1 ;

w1 = w;

w1引用计数拷贝了w  前面用__strong关键字修饰 不仅指向w所开辟的空间。而且还持有w的空间。RC值为2.当w指针释放的时候,w1没有影响


  3、深拷贝

FYWork *w = [[FYWork alloc] init];

w.name = @“feng yong”;

FYWork *w1 = [[FYWork alloc]init];

w1.name = w.name;

w1深拷贝了w 是开辟了两块不同的空间,w1指向自己的空间并持有,w也指向自己的空间并持有。RC值为2.并且,当w的name值改变,也和w1的name属性无关




copy的用法:

FYWork *w = [[FYWork alloc] init];

FYWork *w1 = [w copy]; 

但是,使用copy有两个需要做的事:

1.在调用copy方法的对象的类.h中要遵守NSCopying协议

2.在调用copy方法的对象的类.h中要重写allocWithZone方法






  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值