gpt4 book ai didi

ios - Swift 中的自定义类集群

转载 作者:IT王子 更新时间:2023-10-29 05:27:00 25 4
gpt4 key购买 nike

这是一个比较常见的设计模式:

https://stackoverflow.com/a/17015041/743957

它允许您从 init 调用中返回一个子类。

我正在尝试找出使用 Swift 实现相同目标的最佳方法。

我知道很可能有更好的方法可以用 Swift 实现同样的事情。但是,我的类将由我无法控制的现有 Obj-C 库初始化。所以它确实需要以这种方式工作并且可以从 Obj-C 调用。

如有任何指点,我们将不胜感激。

最佳答案

我不相信 Swift 可以直接支持这种模式,因为初始化器不会像在 Objective C 中那样返回一个值——所以你没有机会返回一个备用对象实例。

您可以使用类型方法作为对象工厂 - 一个相当人为的例子是 -

class Vehicle
{
var wheels: Int? {
get {
return nil
}
}

class func vehicleFactory(wheels:Int) -> Vehicle
{
var retVal:Vehicle

if (wheels == 4) {
retVal=Car()
}
else if (wheels == 18) {
retVal=Truck()
}
else {
retVal=Vehicle()
}

return retVal
}

}

class Car:Vehicle
{
override var wheels: Int {
get {
return 4
}
}
}

class Truck:Vehicle
{
override var wheels: Int {
get {
return 18
}
}
}

主.swift

let c=Vehicle.vehicleFactory(4)     // c is a Car

println(c.wheels) // outputs 4

let t=Vehicle.vehicleFactory(18) // t is a truck

println(t.wheels) // outputs 18

关于ios - Swift 中的自定义类集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24014122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com