#swift #singleton
#swift #singleton
Вопрос:
Я пытаюсь создать singleton в Swift, но я получаю эту ошибку:
инициализатор недоступен из-за уровня частной защиты
Вот мой код (одноэлементный класс)
class mySingleton{
private init() { }
static let sharedInstance = mySingleton()
var numbers = 0
func incrementNumberValue() {
numbers = 1
}
}
Вот где я вызываю одноэлементный:
override func viewDidLoad() {
super.viewDidLoad()
let single = mySingleton().sharedInstance
}
Вот ошибка:
Кто-нибудь из вас знает, почему или как я могу исправить эту ошибку?
Комментарии:
1. Вы установили для инициализатора значение private, но затем вызываете MySingleton() , который пытается инициализировать объект этого класса. Вы должны изменить его на MySingleton. sharedInstance
Ответ №1:
Ваша строка:
mySingleton().sharedInstance
имеет опечатку. Как написано, вы пытаетесь создать экземпляр mySingleton
, а затем вызвать sharedInstance
метод для нового экземпляра. Это две ошибки.
Что вы на самом деле хотите, так это:
mySingleton.sharedInstance
Теперь это вызывает константу sharedInstance
типа в вашем mySingleton
классе.
КСТАТИ — ожидается, что имена классов начинаются с прописных букв. Имена методов и переменных должны начинаться со строчных букв.
Ответ №2:
для использования объектом экземпляра
класс MySingleton{
private init() { }
static let sharedInstance = mySingleton()
var sharedInstanceByInstance: mySingleton{
return mySingleton.sharedInstance
}
//Usage: mySingleton().sharedInstanceByInstance
// or
func getShared()-> mySingleton{
return mySingleton.sharedInstance
}
//Usage: mySingleton().getShared()
}