@property(nonatomic, strong) NSString *name;
与
@property(nonatomic, copy) NSSting *name;
我理解copy是深拷贝的意思~但是不明白为什么为什么要使用copy,使用strong有没有问题呢?
copy
赋值时会开辟一个新的内存区域,而 strong
则不会。使用 copy
可以防止不可变的属性被赋值的是可变的数据时,因为可变数据的改变而改变属性的值。举个例子
@interface Test : NSObject
@property (nonatomic,strong) NSString *str1;
@property (nonatomic,copy) NSString *str2;
@end
#import <Foundation/Foundation.h>
#import "Test.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSMutableString *str = [NSMutableString stringWithString:@"hello"];
Test *test = [[Test alloc]init];
test.str1 = str;
test.str2 = str;
[str appendString:@" world"];
NSLog(@"str:%@ str1:%@ str2:%@",str,test.str1,test.str2);
}
return 0;
}
这段代码的输出结果是: str:hello world str1:hello world str2:hello
copy
的作用应该显而易见了.