NSString 为什么要使用copy,而不是retain?
来源:互联网 发布:软件界面设计要求 编辑:程序博客网 时间:2024/05/18 02:30
1、首先如果使用retain,只是引用计数+1,并没有生成新的对象,所以效率好
我们把mName的值 “wang” 赋给了p.name,而如果p里面的name使用的是retain,那么只是将mName的引用计数+1,这时候p.name的值是 ”wang“
2、但是使用copy安全。因为NSString 为 NSMutableString 的基类,如果将NSMutableString 以retain的形式赋值给NSString后,后续修改NSMutableString会导致NSString内容的变化,这通常不是我们希望的,所以NSString要使用copy。比如:
NSMutableString *mName = [NSMutableString stringWithString:@"wang"]; Person *p = [[[Person alloc] init] autorelease]; p.name = mName; [mName setString:@"chen"]; NSLog(@"p.name:%@", p.name);
我们把mName的值 “wang” 赋给了p.name,而如果p里面的name使用的是retain,那么只是将mName的引用计数+1,这时候p.name的值是 ”wang“
紧接着我们在下面把mName的值设置为“chen”,结果你再打印p.name,这时候它的值也会变成chen,这是我们不想见到的。
使用copy就不会有这个问题。
- NSString 为什么要使用copy,而不是retain?
- NSString为什么要使用copy,而不是retain?
- NSString 为什么使用copy,而不是retain?
- iOS NSString 为什么要使用copy,而不是retain?
- 为什么 NSString 要用 copy 修饰,而不是 retain
- NSString为什么使用copy
- NSString,NSMutableString使用retain, copy理解
- NSString,NSMutableString使用retain, copy理解
- NSString,NSMutableString使用retain, copy理解
- NSString,NSMutableString使用retain, copy理解
- 为什么delegate属性使用delegate而不是retain?
- 为什么delegate属性使用delegate而不是retain?
- 为什么delegate属性使用assign而不是retain?
- 为什么delegate属性使用assign而不是retain?
- 为什么delegate属性使用assigne而不是retain?
- 为什么delegate属性使用assign而不是retain?
- NSString retain or copy
- NSString copy or retain
- 左旋字符串
- HDU-2546-饭卡
- flex复选框和下拉列表
- [时间投资法]第一章-为什么高效管理时间这样难
- How should i explain Dynamic Programming to a 4-year-old?
- NSString 为什么要使用copy,而不是retain?
- UVa10226 - Hardwood Species
- MySQL Proxy
- HDU-3466-Proud Merchants
- SRM 212 Div II Level Two: WinningRecord,Brute Force
- LeetCode-Median of Two Sorted Arrays
- 微小说
- 归并排序
- [时间投资学]第二章-为什么新行动总是难以坚持