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

Ric*_*rdo 1 objective-c ios

在objc中我看到这段代码:

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

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

rma*_*ddy 6

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

但在这种情况下,它是毫无意义的,因为声明attributedText属性,因此您实际上在代码中有一个冗余调用.UILabelcopycopy