(IOS系列)——OC基础语法:Copy

来源:互联网 发布:js改变label的宽度 编辑:程序博客网 时间:2024/05/22 01:40


Copy的作用是将已有对象复制出一个性的对象,在对新的对象做修改的时候,原来的对象没有影响

Copy的使用,分为两种

Copy出一个可变对象(mutableCopy方法)

copy出一个不可变对象(copy)

(深拷贝) :内容和对象都会拷贝  结构改变了的copy都是深拷贝 从可变copy出一个可变结构也是深拷贝

(浅拷贝):仅仅拷贝对象(指针),内容还是以前的那块内容 从不可变对象copy出一个不可变对象 

void MutableCopy(){    //创建一个NSString对象    NSString *str = [[NSString alloc] initWithFormat:@"My age is %i",20];        //更具已有对象,Copy出一个可变字符串    NSMutableString *string = [str mutableCopy];        //我们先验证copy出来的可变对象是否为同一个对象,其实对于这一点,不用想都知道,一个可变一个不可变,必然不是同意个对象    NSLog(@"%i",str == string);        [string appendFormat:@" I love"];   //在可变字符串后面添加一段字符串    NSLog(@"%@",string);        [str release];    [string release];}#pragma mark copy的使用void stringCopy(){    //创建一个NSString对象    NSString *str = [[NSString alloc] initWithFormat:@"My age is %i",20];        //根据已有对象,Copy出一不可变个可变字符串    NSMutableString *string = [str copy];        //我们先验证copy出来的不可变对象是否为同一个对象,这一点和可变字符串的是有区别的    NSLog(@"%i",str == string);             //这个返回值为1,也就是说,创建出来的对象和以前的对象是同一个对象  这是因为,创建出来的这个对象也是不可变的,那么系统为了性能考虑,不会重新分配内存创建一个新的对象,而是直接返回源对象本身        [string release];    [str release];          //有过alloc new copy这样的操作,都需要我们手动释放内存}