提问人:rajeev pulleti 提问时间:4/20/2021 最后编辑:rajeev pulleti 更新时间:4/21/2021 访问量:637
在 iOS Swift 类中创建值类型属性
Create a value type property in Class iOS swift
问:
我们都知道类的属性始终是引用类型,但是有没有可能在类中创建值类型属性呢?
类:
class Color {
var name : String!
init(name : String) {
self.name = name
}
}
利用率 :
let red = Color(name: "Red")
let yellow = red
print("red \(red.name ?? "")") // prints Red
print("yellow \(yellow.name ?? "")") // prints Red
// assigning a new value to yellow instance
yellow.name = "Yellow"
print("red \(red.name ?? "")") // prints Yellow
print("yellow \(yellow.name ?? "")") // prints Yellow
在为黄色实例赋值后,它也会更改红色实例的值。
答:
0赞
Mỹ Mỹ
4/20/2021
#1
类是引用类型,因此您可以尝试从类的实例创建副本。
也许这会有所帮助。
0赞
salman siddiqui
4/21/2021
#2
class Color: NSObject, NSCopying {
var name : String!
init(name : String) {
self.name = name
}
func copy(with zone: NSZone? = nil) -> Any {
let copy = Color(name: name)
return copy
}
}
let red = Color(name: "red")
let yellow = red.copy() as! Color
print("red \(red.name ?? "")") // prints Red
print("yellow \(yellow.name ?? "")") // prints Red
// assigning a new value to yellow instance
yellow.name = "Yellow"
print("red \(red.name ?? "")") // prints red
print("yellow \(yellow.name ?? "")") // prints Yellow
- 使类符合 NSCopying。这不是严格要求的,但它可以明确您的意图。
- 实现 copy(with:) 方法,其中实际复制 发生。
- 在对象上调用 copy()。
评论
Int
String
Color