2014-06-24 58 views
5

Swift如何在属性属性中实现ARC?例如,如何让我的字符串变量在Swift中使用拷贝代替强壮?Swift如何在属性属性中实现ARC?

+5

在Swift中,Apple的* Swift编程语言*具有整个[chapter](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html)。 – Kreiri

+2

我建议您也观看Swift中间环节。 https://developer.apple.com/videos/wwdc/2014/ –

回答

17

,当你想从Objective-C中的copy行为可以使用@NSCopying属性。

Swift Book:

应用此属性的一类存储的可变特性。这 属性导致财产的setter与该属性的值,返回由copyWithZone方法,而不是 物业本身的价值的一个副本 合成。该属性的类型必须符合NSCopying协议 。

的NSCopying属性作用类似Objective-C的 副本财产属性的方法。

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

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

斯威夫特的字符串类型是值类型。如果你创建一个新的字符串值, ,当它被传递给一个函数或方法, 或当它被分配到一个固定或可变的字符串值被复制。在每种情况下,现有字符串值的新副本 已创建,新副本为 已通过或已分配,而不是原始版本。

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