一、不可变字符串属性、
@property (nonatomic,strong)NSString *strongedString;
@property (nonatomic,copy)NSString *copyedString;
1、当源不可变字符串改变时
使用srong修饰的属性由于取得的还是源不可变字符串地址、其值会跟随源字符串改变而改变。
使用copy修饰的属性进行了浅拷贝、还是源不可变字符串的地址、其值会跟随源字符串改变而改变。
2、当源可变字符串改变时
使用srong修饰的属性由于取得的还是源不可变字符串地址、其值会跟随源字符串改变而改变。
使用copy修饰的属性由于进行了深拷贝、取得了另一份内存地址、其值不会跟随着改变。
二、可变字符串属性
@property (nonatomic,strong)NSMutableString *strongedString;
@property (nonatomic,copy)NSMutableString *copyedString;
1、源字符串为不可变字符串时
使用srong修饰的属性由于取得的地址改变、源字符串不可变、其值不会跟随源字符串改变而改变。
使用copy修饰的属性进行了深拷贝、源字符串不可变,其值不会随着字符串改变而改变。且copyedString为不可变字符串。对其使用appendString方法会造成闪退。
2、源字符串为可变字符串时
使用strong修饰的属性的地址跟随源字符串地址、源字符串可变、其值改变。
使用copy修饰的属性进行深拷贝、改变了地址、且为不可变字符串。使用appendString方法会造成闪退。
可变字符串属性理解感觉不到位、待考究....