В сентябре 2015 года, как именно вы делаете синглтон в Swift:
public class Model
{
static let shared = Model()
// ( for ocd friends ... private init() {} )
func test()->Double
{
return 3.33
}
}
затем в другом месте...
// file ViewController.swift, say
import UIKit
class ViewController:UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()
print("view controller loaded!")
print("singleton test! \( Model.shared.test() )")
}
}
Нет проблем.
Однако. Я добавляю эту маленькую вещь...
public let model = Model.shared
public class Model
{
static let shared = Model()
func test()->Double
{
return 3.33
}
}
тогда вы можете просто выполнить следующие действия по всему проекту:
class ViewController:UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()
print("view controller loaded!")
print("singleton test! \( model.test() )")
}
}
Традиционная идиома:
Model.shared.blah()... вы видите это везде в базе кода
"моя" идиома:
model.blah()... вы видите это везде в базе кода
Итак, это приводит к тому, что все выглядит красиво:
(В вашем проекте эти "одиночные переменные" будут такими, как scores.
, networking.
, heuristics.
или что бы ни случилось в вашем проекте.)
Таким образом, это "макроподобная" идиома.
Единственная цель - внешний вид кода.
Упрощение появления ImportantSystem.SharedImportantSystem
до importantSystem.
во всем проекте.
Может ли кто-нибудь увидеть какие-либо проблемы с этой идиомой?
Проблемы могут быть техническими, стилистическими или любой другой категорией, если они действительно глубоки.