object c的浅拷贝(地址拷贝)和深拷贝(对象拷贝)

来源:互联网 发布:php代码混淆解密工具 编辑:程序博客网 时间:2024/05/17 00:04
////  main.m//  DeepCopyDemo////  Created by 千雅爸爸 on 16/10/6.//  Copyright © 2016年 kodulf. All rights reserved.//#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {    @autoreleasepool {        //浅拷贝是地址拷贝,        //深拷贝是对象拷贝,是一个新的对象,新的地址                //copy(可以是浅拷贝,也可以是深拷贝) mutablecopy(一定是深拷贝)        //注意copy方法,如果用来拷贝可变的对象,那么就是浅拷贝,如果copy的是可变的对象,那么就是深拷贝。要记住一点copy 饭回来的对象一定是不可变的        //mutablecopy,可变拷贝,无论我们使用mutablecopy 这个方法去操作的对象是可变的还是不可变的,最后都会进行深拷贝,而且拷贝出来的空间一定是可变的。                        NSString *string = @"string";//不可变的字符串        NSLog(@"%p",string);        //当copy 拷贝是是一个不可变的字符串的时候,是浅拷贝        NSString *string2 =[string copy];        NSLog(@"%p",string2);                //当copy 拷贝是一个可变的字符串的时候,是深拷贝        NSMutableString *mstring = [[NSMutableString alloc] initWithFormat:@"hello"];        NSString *string3= [mstring copy];        NSLog(@"%p",mstring);        NSLog(@"%p",string3);                //mutablecopy,可变拷贝,无论我们使用mutablecopy 这个方法去操作的对象是可变的还是不可变的,最后都会进行深拷贝,而且拷贝出来的空间一定是可变的。        NSMutableString *string4 = [string mutableCopy];        NSLog(@"%p",string);        NSLog(@"%p",string4);                NSMutableString *string5 = [mstring mutableCopy];        NSLog(@"%p",string);        NSLog(@"%p",string5);            }    return 0;}



0 0
原创粉丝点击