//
// 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;
}