NSString 属性为啥用copy 不用strong

copy不能修改,strong可以修改,防止字符串被意外修改.demo:

——————————————————code 你要的 demo——————————————————

@property (nonatomic, copy) NSString * copystring;

@property (nonatomic, strong) NSString *strongString;

NSMutableString *string = [NSMutableString stringWithString:@"a"];
   
    self.copystring = string;
    self.strongString = string;
   
    [string appendString: @"b"];

NSLog(@"copyString:%@--StrongString:%@",self.copystring, self.strongString); // opyString:a--StrongString:ab

--------------------------------------------------------------------------------------------------------------------------------------------

时间: 2024-10-13 17:32:55

NSString 属性为啥用copy 不用strong的相关文章

iOS的属性声明:retain和strong的区别

声明属性时用strong或者retain效果是一样的(貌似更多开发者更倾向于用strong).不过在声明Block时,使用strong和retain会有截然不同的效果.strong会等于copy,而retain竟然等于assign! 当然定义Block还是应该用copy(还有其他需要注意的地方,可以参考这篇文章:iOS: ARC和非ARC下使用Block属性的问题),因为非ARC下不copy的Block会在栈中,ARC中的Block都会在堆上的. 可以这样复现问题.在非ARC环境下,定义一个简单

为啥NSString的属性要用copy而不用retain

之前学习生活中,知道NSString的属性要用copy而不用retain,但是不知道为啥,这两天我研究了一下,然后终于明白了. 具体原因是因为用copy比用retain安全,当是NSString的时候,其实用copy和retain都行,当用NSMutableString,那么就要用copy,NSMutableString的值不会被修改,而用retain的时候,NSMutableString的值会被修改,具体情况,可以看下面的代码: #import <Foundation/Foundation.h

NSString属性什么时候用copy,什么时候用strong?

我们在声明一个NSString属性时,对于其内存相关特性,通常有两种选择(基于ARC环境):strong与copy.那这两者有什么区别呢?什么时候该用strong,什么时候该用copy呢?让我们先来看个例子.        示例 我们定义一个类,并为其声明两个字符串属性,如下所示: 1 2 3 4 @interface TestStringClass () @property (nonatomic, strong) NSString *strongString; @property (nonat

NSString属性什么时候用copy,什么时候用strong?【转】

转自:http://www.cocoachina.com/ios/20150512/11805.html. 我们在声明一个NSString属性时,对于其内存相关特性,通常有两种选择(基于ARC环境):strong与copy.那这两者有什么区别呢?什么时候该用strong,什么时候该用copy呢?让我们先来看个例子. 示例 我们定义一个类,并为其声明两个字符串属性,如下所示: 1 2 3 4 @interface TestStringClass () @property (nonatomic, s

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

大部分的时候NSString的属性都是copy,那copy与strong的情况下到底有什么区别呢? 比如: @property (retain,nonatomic) NSString *rStr; @property (copy, nonatomic)   NSString *cStr; - (void)test: { NSMutableString *mStr = [NSMutableStringstringWithFormat:@"abc"]; self.rStr   = mStr

【转】 NSString什么时候用copy,什么时候用strong

原文: http://blog.csdn.net/itianyi/article/details/9018567 大部分的时候NSString的属性都是copy,那copy与strong的情况下到底有什么区别呢? 比如: @property (retain,nonatomic) NSString *rStr; @property (copy, nonatomic)   NSString *cStr; - (void)test: { NSMutableString *mStr = [NSMutab

OC语法--问NSString属性声明中的copy和retain具体区别

问NSString属性声明中的copy和retain具体区别 copy是将源对象release然后新对象copy在付给源对象 retain是将源对象release然后新对象retain再付给源对象 根本区别就是对象进行深拷贝时copy要开辟新的存储空间,浅拷贝时效果相同.引用计数方面retain是源对象引用计数加1,copy当 是浅复制时源对象引用计数加1,深复制时源对象引用计数不变,新对象引用计数加1.    NSString *str = @"hello"; // copy原模原样

iOS开发-assign、retain、copy、strong、weak的区别

对于初学的开发者,对于assign.retain.copy.strong.weak的用法及意义可能不是很明白,我对于这个问题也研究了很久,写篇博文,巧巧代码,让我们来瞧瞧吧! 先定义一个Student类: #import <Foundation/Foundation.h> @interface Student : NSObject @property (nonatomic, copy) NSString *name; @end 然后先是mrc下的assign声明 @property (nona

iOS中copy和strong修饰变量的区别

大部分的时候NSString的属性都是copy,那copy与strong的情况下到底有什么区别呢? 比如:@property (retain,nonatomic) NSString *rStr;@property (copy, nonatomic)   NSString *cStr; - (void)test:{    NSMutableString *mStr = [NSMutableStringstringWithFormat:@"abc"];    self.rStr   = m