您可以在想要从Objective-C获得“copy”行为时使用@NSCopying属性。来自Swift Book:应将此属性应用于类的存储变量属性。此属性会导致使用copyWithZone方法返回的属性值的副本(而不是属性本身的值)生成该属性的setter。该属性的类型必须符合NSCopying协议。NSCopying属性的行为与Objective-C copy属性的行为类似。但是,在特定情况下,对于String类型的属性,这并不是必需的。在Swift中,字符串是一种值类型。因此,当将现有的字符串分配给新变量时,该变量实际上存储了字符串的一个副本,而不是对现有字符串的引用。Swift的String类型是值类型。如果创建一个新的String值,则在传递给函数或方法或分配给常量或变量时,该String值会被复制。在每种情况下,都会创建现有String值的新副本,并且传递或分配新副本,而不是原始版本。因此,当您拥有要使用复制行为设置的引用类型属性时,应使用@NSCopying属性。