1.iOS开发怎么使用copy关键字
原因:因为父类指针可以指向子类对象,使用copy的目的是为了让本对象的属性不受外界影响,使用copy无论给我传入是一个可变对象还是不可对象, 我本身持有的就是一个不可变的副本.,如果我们使用是strong,那么这个属性就有可能指向一个可变对象,如果这个可变对象在外部被修改了,那 么会影响该属性.
//User.h文件中
@property (nonatomic, strong)NSString *name;此时若将一个可变字符串set给name,那么此时的name则指向的是一个可变字符
那么就无法保证name的不可变性
@property (nonatomic, copy)NSString *name;此时若将一个可变字符串set给name,此时会执行[MutableString copy]内容复 制,即深复制,将返回一个不可变字符串,即name指向的是一个不可变字符串,以后即使MutableString改变也不会影响name的值
例如:
NSMutableString *string = [NSMutableString stringWithString:@"origin"];//copy
NSString *stringCopy = [string copy];
[string appendString:@"origion!"]
此时的打印结果:string:originorigion!,而stringCopy仍为:origin
网友评论