[英]Objective-C copy and retain
我何时应该使用复制而不是使用保留? 我没理得。
如果要保证对象的状态,可以使用copy
。
NSMutableString *mutString = [NSMutableString stringWithString:@"ABC"];
NSString *b = [mutString retain];
[mutString appendString:@"Test"];
在这一点上,b被第3行搞砸了。
NSMutableString *mutString = [NSMutableString stringWithString:@"ABC"];
NSString *b = [mutString copy];
[mutString appendString:@"Test"];
在这种情况下,b是原始字符串,不会被第3行修改。
这适用于所有可变类型。
保留 :在创建的对象上完成,它只会增加引用计数。
copy - 它创建一个新对象,当创建新对象时,保留计数将为1.希望这可以帮助您。
如果您不希望在不知情的情况下更改收到的值,则复制非常有用。 例如,如果您有一个属性是NSString
并且您依赖该字符串一旦设置就不会更改,那么您需要使用copy。 否则,有人可以传递一个NSMutableString
并更改该值,该值又会更改NSString
的基础值。 NSArray
和NSMutableArray
除了数组上的副本只是将所有指针引用复制到新数组,但会阻止删除和添加条目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.