NSString什么时候用copy,什么时候用strong
来源:互联网 发布:淘宝怎么投诉卖家版权 编辑:程序博客网 时间:2024/04/26 17:03
大部分的时候NSString的属性都是copy,那copy与strong的情况下到底有什么区别呢?
比如:
@property (retain,nonatomic) NSString *rStr;@property (copy, nonatomic) NSString *cStr;- (void)test:{ 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对象的地址为0x11,也就是0x11是@“abc”的首地址,mStr变量自身在内存中的地址为0x123;
当把mStr赋值给retain的rStr时,rStr对象的地址为0x11,rStr变量自身在内存中的地址为0x124;rStr与mStr指向同样的地址,他们指向的是同一个对象@“abc”,这个对象的地址为0x11,所以他们的值是一样的。
当把mStr赋值给copy的cStr时,cStr对象的地址为0x22,cStr变量自身在内存中的地址0x125;cStr与mStr指向的地址是不一样的,他们指向的是不同的对象,所以copy是深复制,一个新的对象,这个对象的地址为0x22,值为@“abc”。
如果现在改变mStr的值:
[mStr appendString:@"de"]; NSLog(@"retainStr:%@", _rStr); NSLog(@"copyStr:%@", _cStr);
结果,
使用retain的字串rStr的值:@”abcde”,
而使用copy的字串cStr的值:@”abc”,
所以,如果一般情况下,我们都不希望字串的值跟着mStr变化,所以我们一般用copy来设置string的属性。
如果希望字串的值跟着赋值的字串的值变化,可以使用strong,retain。
注意:上面的情况是针对于当把NSMutableString赋值给NSString的时候,才会有不同,如果是赋值是NSString对象,那么使用copy还是strong,结果都是一样的,因为NSString对象根本就不能改变自身的值,他是不可变的。这里写代码片
0 0
- NSString什么时候用copy,什么时候用strong
- NSString什么时候用copy,什么时候用strong
- NSString什么时候用copy,什么时候用strong
- NSString什么时候用copy,什么时候用strong
- NSString什么时候用copy,什么时候用strong
- NSString什么时候用copy,什么时候用strong
- NSString什么时候用copy,什么时候用strong
- NSString什么时候用copy,什么时候用strong
- NSString什么时候用copy,什么时候用strong
- NSString什么时候用copy,什么时候用strong
- NSString什么时候用copy,什么时候用strong
- NSString什么时候用copy,什么时候用strong
- NSString什么时候用copy,什么时候用strong
- NSString什么时候用copy,什么时候用strong
- NSString什么时候用copy,什么时候用strong
- NSString属性什么时候用copy,什么时候用strong?
- NSString属性什么时候用copy,什么时候用strong?
- NSString属性什么时候用copy,什么时候用strong?
- Java 基础——类和对象
- ajax ,多图上传,demo,
- android :使用swipment(侧滑)时,listview 内容重叠。
- error: ‘for’ loop initial declarations are only allowed in C99 mode
- iOS实时卡顿监控
- NSString什么时候用copy,什么时候用strong
- 【南理oj】5 - Binary String Matching(水)
- 移动端页面的尺寸设置
- 【ASP.NET】Webform与MVC开发比较
- js中push()的用法
- 高性能网站架构之负载均衡 Nginx+tomcat+redis实现tomcat集群
- js兼容性
- Qt中读写Excel
- 折线动画、渐变色