Swift如何在属性特性中实现自动引用计数(ARC)?

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

5
苹果公司推出的 Swift编程语言 在其中一个章节详细介绍了Swift中的ARC。 - Kreiri
2
我建议你也观看中级Swift WWDC会议。https://developer.apple.com/videos/wwdc/2014/ - Cezary Wojcik
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接