为啥NSString的属性要用copy而不用retain
来源:互联网 发布:全文翻译软件 编辑:程序博客网 时间:2024/04/30 17:20
之前学习生活中,知道NSString的属性要用copy而不用retain,但是不知道为啥,这两天我研究了一下,然后终于明白了.
具体原因是因为用copy比用retain安全,当是NSString的时候,其实用copy和retain都行,当用NSMutableString,那么就要用copy,NSMutableString的值不会被修改,而用retain的时候,NSMutableString的值会被修改,具体情况,可以看下面的代码:
#import <Foundation/Foundation.h>//协议有两种方式,第一是以ing结尾形式,第二,以delegate结尾形式@interface person : NSObject<NSCopying>@property (nonatomic,copy)NSString * name;
person * p = [[person alloc]init]; NSMutableString * name = [[NSMutableString alloc]initWithString:@"hello"]; p.name = name; [name appendString:@" word"]; NSLog(@"%@",p.name);
打印后结果是
2014-07-05 17:08:44.170 DepthCopy[1399:303] helloProgram ended with exit code: 0
再看下面用retain
#import <Foundation/Foundation.h>//协议有两种方式,第一是以ing结尾形式,第二,以delegate结尾形式@interface person : NSObject<NSCopying>@property (nonatomic,retain)NSString * name;
person * p = [[person alloc]init]; NSMutableString * name = [[NSMutableString alloc]initWithString:@"hello"]; p.name = name; [name appendString:@" word"]; NSLog(@"%@",p.name);
打印结果是:
2014-07-05 17:13:19.531 DepthCopy[1412:303] hello wordProgram ended with exit code: 0
我们可以发现结果被改变了,成为了hello word;
所以,由以上代码,可以看出copy比retain安全,也就能明白为啥NSString的属性要用copy而不用retain了;
0 0
- 为啥NSString的属性要用copy而不用retain
- NSString和block的属性时copy,而不用retain 而容器类使用retain
- NSString为啥要使用Copy属性
- NSString属性变量的特性copy retain
- NSString不用strong而用copy修饰的原因
- NSString copy和retain属性
- iOS @property中的NSString, NSArray, NSDictionary属性为什么大多时候用copy而不用strong的原因
- NSString 的copy和retain
- NSString的copy 属性
- NSString 为什么要使用copy,而不是retain?
- NSString为什么要使用copy,而不是retain?
- iOS中assign,copy,retain之间的区别以及weak和strong的区别 代理为啥要用weak修饰
- NSString retain or copy
- NSString copy or retain
- 推荐NSString类型的属性用copy
- NSString属性声明中的copy和retain区别
- NSString属性声明中的copy和retain区别
- NSString属性声明中的copy和retain区别
- 黑马程序员_Log4J
- IOS 不能触发didSelectRowAtIndexPath事件原因
- 最新spring4.0.3+hibernate4.3.5整合
- 【Android】如何在自定义View中设置自定义的属性
- C++字符串操作
- 为啥NSString的属性要用copy而不用retain
- java中的finally关键字
- sql plus命令大全
- 装饰模式--学习笔记
- Loader.loaderInfo 与 Loader.contentLoaderInfo
- java 类集框架
- 黑马程序员_Jsoup知识整理
- TCP状态转换图详解
- WebView