黑马程序员——OC语言加强---copy概念及入门

                                                                                         ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

copy概念及入门

1、对象copy的概念

1)什么是copy

Copy的字面意思是“复制”、“拷贝”,是一个产生副本的过程;

对象拷贝的目的:要使用某个对象的数据,但是在修改对象的时候不影响原来的对象内容。

常见的复制有用一个源文件产生:文件复制;

作用:利一个副本文件; 

2)特点:

修改源文件的内容,不会影响副本文件;

修改副本文件的内容,不会影响源文件;

OC中的copy,就是指的对象的拷贝;

作用:利用一个源对象产生一个副本对象

   修改源对象的属性和行为,不会影响副本对象
   修改副本对象的属性和行为,不会影响源对象

3)如何使用copy功能

一个对象可以调用copy或mutableCopy方法来创建一个副本对象

copy: 创建的是不可变副本(如NSString、NSArray、NSDictionary)

mutableCopy:创建的是可变副本(如NSMutableString、NSMutableArray、NSMutableDictionary) 

4)使用copy功能的前提

copy : 需要遵守NSCopying协议,实现copyWithZone:方法

@protocol NSCopying

- (id)copyWithZone:(NSZone *)zone;

@end 

mutableCopy : 需要遵守NSMutableCopying协议,实现mutableCopyWithZone:方法

@protocol NSMutableCopying

- (id)mutableCopyWithZone:(NSZone *)zone;

@end 

2、copy快速入门

以NSString字符串为例,进行copy 和 mutableCopy 演示

copy就是浅复制,因为没有产生新的对象(有没有产生新的对象也是判断深浅复制的标准) 此处的copy 后产生还是不可变的字符串 

#import <Foundation/Foundation.h>

@interface Dog : NSObject

@end
@implementation Dog

@end
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        Dog *d = [Dog new];
        //目的:
        // d拷贝一份,给byd
        Dog *byd = [d copy];      
        
    }
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值