@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的作用应该显而易见了.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。