Swift如何在属性属性中实现ARC?

时间:2014-06-24 13:14:39

标签: swift

Swift如何在属性属性中实现ARC?例如,如何让我的String变量在Swift中使用copy而不是strong?

1 个答案:

答案 0 :(得分:18)

如果需要Objective-C中的@NSCopying行为,可以使用copy属性。

来自Swift Book:

  

将此属性应用于类的存储变量属性。这个   属性导致属性的setter与副本合成   属性的值 - 由copyWithZone方法返回 - 而不是   财产本身的价值。财产的类型必须   符合NSCopying协议。

     

NSCopying属性的行为方式与Objective-C类似   复制属性属性。

但是,在String属性的特定情况下,没有必要这样做。

字符串是Swift中的值类型。因此,当将现有String分配给新变量时,该变量实际上存储了String的副本,而不是对现有变量的引用。

  

Swift的String类型是值类型。如果您创建一个新的String值,   将String值传递给函数或方法时复制它,   或者当它被分配给常数或变量时。在每种情况下,一个新的   创建现有String值的副本,新副本为   传递或分配,而不是原始版本。

因此,当您具有要使用复制行为设置的引用类型的属性时,将使用@NSCopying属性。