带参数的swift单态

带参数的swift单态,swift,Swift,我对斯威夫特比较陌生,四处搜索,但找不到任何满意的答案。我希望有一个可以用一些变量初始化的单例类实例。例如 public class Singleton { var car: String var bus: String init(car: String, bus: String) { self.car = car self.car = bus } func drive() { print("I will drive") }

我对斯威夫特比较陌生,四处搜索,但找不到任何满意的答案。我希望有一个可以用一些变量初始化的单例类实例。例如

public class Singleton {
   var car: String
   var bus: String

   init(car: String, bus: String) {
    self.car = car
    self.car = bus
   }

   func drive() {
       print("I will drive")
   }
}


public class SingletonConsumer {
  // create an instance of Singleton Once
  var driver: Singleton = Singleton(car: "honda", bus: "volvo")
  driver.drive()
}



public class driverClassWorld : SingletonConsumer {
   driver.drive()
}

我怎样才能做到呢?我尝试了协议,但遇到的问题是如何用参数实例化singleton类。

我不明白这个问题

首先从你的大脑中删除singleton片刻。因为我认为你对什么是独生子女的看法是错误的

现在让我们将您的问题改为:“如何用参数实例化类”

它是这样的:

import Foundation

class Test {

    let someText : String!

    init(something:String){
        someText = something
    }

    func test(){
        print("TEST \(someText)")
    }
}

let a = Test(something: "Me")
a.test()
输出:

TEST Optional("Me")
TEST Optional("REAL SINGLETON")
您只需要使用所需的参数定义一个init

现在要正确地实例化一个单例(基本上它只是上面的类,而不是单个实例)。有很多方法,旧的Objective C方法仍然有效

但对于斯威夫特来说,这是最常见的模式。您需要定义一个静态属性

例如:

import Foundation

class Test {

    static let shared = Test(something: "REAL SINGLETON")

    let someText : String!

    init(something:String){
        someText = something
    }

    func test(){
        print("TEST \(someText)")
    }
}

Test.shared.test()
输出:

TEST Optional("Me")
TEST Optional("REAL SINGLETON")
现在请重新阅读singleton的定义:

单例类是一个只能有一个对象(一个 一次创建一个类的实例)

对于声明单例中的其他模式:

现在,您可能想知道:这个单例实例是什么时候实例化的?

答:它是第一次使用/调用时


这是一节普通课。你为什么叫它单身?在现实情况下,“本田”和“沃尔沃”从何而来?试着让你的变量不可变静态-静态让驾驶员:Singleton=Singleton(汽车:“本田”,公交车:“沃尔沃”)
汽车
/
公交车
是单身汉的糟糕例子。我敢打赌,如果你深入研究,你将无法找到这种单身的有效例子,这是一个很好的指标,表明你一开始并不需要这个。这是否回答了你的问题?