繁体   English   中英

Objective-C复制并保留

[英]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的基础值。 NSArrayNSMutableArray除了数组上的副本只是将所有指针引用复制到新数组,但会阻止删除和添加条目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM