NSString什么时候strong,什么时候用copy

都不希望字串的值跟着mStr变化,所以一般用copy来设置string的属性。

如果希望字串的值跟着赋值的字串的值变化,可以使用strong,retain。


@property (retain,nonatomic) NSString *rStr;

@property (copy, nonatomic) NSString *cStr;


   NSMutableString *mStr = [NSMutableStringstringWithFormat:@"abc"];

self.rStr = mStr;

 self.cStr = mStr;

NSLog(@"mStr:%p,%p",  mStr,&mStr);

 NSLog(@"retainStr:%p,%p", _rStr, &_rStr);

 NSLog(@"copyStr:%p,%p",   _cStr, &_cStr);


[mStr appendString:@"de"];

NSLog(@"retainStr:%@",_rStr);

   NSLog(@"copyStr:%@",    _cStr);

结果,

使用retain的字串rStr的值:@"abcde",

而使用copy的字串cStr的值:@"abc",



注:上面的情况是针对于当把NSMutableString赋值给NSString的时候,才会有不同,如果是赋值是NSString对象,那么使用copy还是strong,结果都是一样的,因为NSString对象根本就不能改变自身的值,他是不可变的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容