验证点语法中 retain 和 copy的区别
retain情况下,str的内容不管怎么变化,car.name指向的内存地址不变 ; copy情况下,str的内容改变了,car.name指向的对内存会复制一份出来,因此内存地址是变化的 ; 如果str不是可变的NSMutableString,不管是retain还是copy,只要str的值发生变化,指向的堆内存都会改变
NSMutableString *str = [NSMutableString stringWithString:@"hello"];
Car *car = [[Car alloc] init];
car.name = str;
NSLog(@"car = %p" , car.name);
NSLog(@"car.name1 = %@" , car.name);
[str appendString:@" world"];
car.name = str;
NSLog(@"car = %p" , car.name);
NSLog(@"car.name2 = %@" , car.name);