扫码关注官方订阅号
@property(nonatomic, strong) NSString *name; 与 @property(nonatomic, copy) NSSting *name;
我理解copy是深拷贝的意思~但是不明白为什么为什么要使用copy,使用strong有没有问题呢?
闭关修行中......
copy赋值时会开辟一个新的内存区域,而 strong 则不会。使用 copy 可以防止不可变的属性被赋值的是可变的数据时,因为可变数据的改变而改变属性的值。举个例子
copy
strong
@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:hellocopy的作用应该显而易见了.
str:hello world str1:hello world str2:hello
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
copy赋值时会开辟一个新的内存区域,而strong则不会。使用copy可以防止不可变的属性被赋值的是可变的数据时,因为可变数据的改变而改变属性的值。举个例子这段代码的输出结果是:
str:hello world str1:hello world str2:hellocopy的作用应该显而易见了.