быстрый синглтон с параметрами - PullRequest
0 голосов
/ 19 сентября 2018

Я относительно новичок в стремительном поиске, но не смог найти удовлетворительного ответа на мою проблему.Я хотел бы иметь экземпляр класса Singleton, который может быть инициализирован с некоторыми переменными.Например,

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()
}

как мне этого добиться?Я попробовал протокол, но проблема, которую я поражаю, состоит в том, как создать экземпляр синглтон-класса с параметрами.

1 Ответ

0 голосов
/ 19 сентября 2018

У меня нет этой проблемы?

Сначала на мгновение удалите синглтон из своего мозга.Потому что я думаю, что у вас неверное представление о том, что такое синглтон.

Теперь давайте перефразируем ваш вопрос: «Как создать экземпляр класса с параметром»

Это так:

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 с нужными вам параметрами.

Теперь нужно правильно создать экземпляр singleton (в основном это просто класс выше, но единственныйпример).Есть много способов, старый подход 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("REAL SINGLETON")

Теперь перечитайте определение синглтона:

одноэлементный класс - это класс, который может иметь только один объект (экземпляр класса) одновременно

Для других шаблонов объявления одноэлементного:

https://cocoacasts.com/what-is-a-singleton-and-how-to-create-one-in-swift

Теперь у вас может возникнуть вопрос: когда создается экземпляр этого одиночного экземпляра?

Ответ: Это когда он впервые используется / вызывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...