Я создаю класс одноплодной в Swift следующим образом:iOS8 + Swift: Создать истинный класс одноплодной
class SingletonClass {
class var sharedInstance: SingletonClass {
struct Singleton {
static let instance = SingletonClass()
}
return Singleton.instance
}
var a: Int?
var b: Int?
var c: Int?
}
Это позволяет мне получить доступ к общему экземпляру из любого места:
SingletonClass.sharedInstance
While это работает, это не делает этот экземпляр единственно возможным во всей системе, и это то, о чем говорят одиночные игры.
Это означает, что я все еще могу создать целый новый экземпляр, например, как это:
let DifferentInstance: SingletonClass = SingletonClass()
И общий экземпляр не только один больше.
Итак, мой вопрос заключается в следующем: есть ли способ в Swift создать настоящий одноэлементный класс, где возможен только один экземпляр?
Почему вы хотите обеспечить, чтобы никто не мог создать экземпляр класса? –
@ DanielGalasko, скажем, например, если у вас есть физический ресурс, с которым ваш класс управляет взаимодействием. Возможно, что несколько экземпляров, взаимодействующих с одним и тем же ресурсом, могут вызвать серьезные или фатальные проблемы. Или, возможно, это просто взаимодействие с базой данных, которая не может быть открыта более одного раза за раз. – drewag
Я слышу вас, но, к сожалению, нет средств защиты вашей каркас от чужого невежества или глупости. Ваш лучший вариант - определить большинство методов установки объектов внутри экземпляра синглтонов, например, URL-адреса базы данных и т. Д. ... –