在iOS开发中,我们在定义一个NSString的时候都会用copy来修饰,@property (nonatomic, copy)NSString *str;那为什么不用strong呢,我写了一个测试,来简单的说明一下首先把修饰符写成strong 在viewDidLoad的方法中,定义一个可变的字符串@property (nonatomic, strong)NSString *str;
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableString *string = [NSMutableString string];
[string appendString:@"hello"];
self.str = string;
NSLog(@"%@",self.str);
[string appendString:@"World"];
NSLog(@"%@",self.str);
}
如果声明为copy类型,则在属性的setter方法中会对传入的对象进行拷贝并返回,并不会出现属性指向MutableString对象的地址,因为返回的是新的拷贝对象,新对象操作已经和原来的老对象无关了。
网友评论