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

2018-04-19  本文已影响0人  baihualinxin

都不希望字串的值跟着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对象根本就不能改变自身的值,他是不可变的。

上一篇下一篇

猜你喜欢

热点阅读