复制不可变对象有什么意义?

时间:2017-04-12 16:03:16

标签: ios objective-c

在objc中我看到了这段代码:

- (void)setSubtitle:(NSAttributedString *)subtitle
{
    self.subtitleLabel.attributedText = [subtitle copy];
}

它基本上是复制一个不可变的字符串。 有什么缘故吗?这是一个优势还是浪费时间? 我不能问作者,因为他好了,不再在这里了。 我没有看到这样做的重点。

1 个答案:

答案 0 :(得分:6)

使用copy是因为某人实际上可以将可变属性字符串传递给您的setSubtitle:方法。使用copy可确保您拥有属性字符串的不可变副本,以防原始可变版本被修改。

但在这种情况下,它是毫无意义的,因为attributedText的{​​{1}}属性被声明为UILabel,因此您实际上在代码中对copy进行了冗余调用。< / p>