一:概念
浅拷贝:指针拷贝,不会创建一个新的对象。浅拷贝简单点说就是对内存地址的复制,让目标对象指针和源对象指针指向同一片内存空间
深拷贝: 内容拷贝,会创建一个新的对象。深拷贝就是拷贝地址中的内容,让目标对象产生新的内存区域,且将源内存区域中的内容复制到目标内存区域中
深拷贝和浅拷贝的本质是内存地址是否相同
二:代码验证
定义两个属性
@property (nonatomic, strong) NSString *stringStrong;
@property (nonatomic, copy) NSString *stringCopy;
情况1:
分别给这两个属性赋值NSString类型
- (void)testStrongAndCopyStr{
//情况1:给属性赋NSString类型的值
NSString *strongStr = @"I am Strong";
NSString *copyStr = @"I am Copy";
self.stringStrong = strongStr;
self.stringCopy = copyStr;
//strongStr是一个指针变量(就是一个变量的地址),它指向strongStr对象的地址。&strongStr指的是strongStr这个指针变量本身所在的地址。
ZWWLog(@"strongStr地址==%p,内容=%@, self.stringStrong地址==%p,内容=%@",strongStr,strongStr,self.stringStrong,self.stringStrong);
ZWWLog(@"copyStr地址==%p,内容=%@, self.stringCopy地址==%p,内容=%@",copyStr,copyStr,self.stringCopy,copyStr);
NSString *strong1Append = [strongStr stringByAppendingString:@"+11111"];
NSString *copy1Append = [copyS