我对 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 SingletonConsumer {
// create an instance of Singleton Once
var driver: Singleton = Singleton(car: "honda", bus: "volvo")
driver.drive()
}
public class driverClassWorld : SingletonConsumer {
driver.drive()
}
我怎样才能实现它?我尝试了协议,但我遇到的问题是如何使用参数实例化单例类。
我没有遇到这个问题?
首先从你的大脑中移除单例一会儿。因为我认为你对单身人士有什么错误的想法。
现在让我们将您的问题改写为:"如何使用参数实例化类">
是这样的:
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")
你只需要用你想要的参数定义一个 init。
现在要正确实例化一个单例(基本上它只是上面的类,而是单个实例(。有很多方法,旧的Objective C方法仍然有效。
但对于 swift 来说,这是最常见的模式。您需要定义一个静态属性。
例:
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("REAL SINGLETON")
现在重读单例的定义:
单例类是只能有一个对象的类 (a 类的实例(一次
对于声明单一实例的其他模式:
https://cocoacasts.com/what-is-a-singleton-and-how-to-create-one-in-swift
现在,您可能想知道:此单一实例何时实例化?
答:这是第一次使用/调用它的时候。