Вот как я делаю синглтон,
public class Model
{
static let shared = Model()
// For ocd friends. Add this line: private init() {}
func test() -> Double
{
return 3.33
}
}
то в другом месте...
class ViewController: UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()
print("Holy singleton test, Batman! \( Model.shared.test() )")
}
}
А как насчет Swift 5?
Какие-нибудь новые драмы или инсайты? Возможно, они добавили «настоящие» синглтоны или?
(да, наконец-то закончили…)
Я не знаком с изменением идиомы, которое вы описываете. У Swift никогда не было «синглетонов» больше, чем у ObjC (на самом деле, меньше, чем у ObjC). У него были общие экземпляры, и идиома для этого была такой же, как и Swift 1 (и идентична после транслитерации в ObjC), насколько мне известно.
@RobNapier - нам действительно пришлось немного исказить себя, чтобы получить синглтоны до Swift 1.2. Но я согласен, что любопытный вопрос вдруг задать сейчас, четыре года спустя.
@Rob Я игнорирую все, что было до 1.2. Их не существует. (Хорошо, может быть, они и существуют, но я их отвергаю.)
@RobNapier Он, вероятно, имеет в виду dispatch_once, который существовал в Swift 1, но затем его облили.
Конечно - все изменилось однажды, может измениться и снова!





Ничего нового. В Swift 5 он остается прежним.
Есть ли причина, по которой вы ожидаете изменений в Swift 5? Изменение природы
staticбыло бы как минимум крайностью. Весь смысл нынешней системы в том, что в ней нет никакой магии. Это даже не синглтон. Есть только один легкодоступный экземпляр (и безprivateтрудно сделать другие экземпляры). Этот вопрос выглядит как начало неограниченного списка «Изменился ли Swift5if? Нет. Изменил ли Swift5 назначения? Нет. Изменил ли Swift5 синтаксис закрытия? Нет». Есть ли что-то особенное в синглтонах?