Fat*_*tie 10 singleton swift swift2
对于2015年9月,这里正是你如何在Swift中创建一个单例:
public class Model
{
static let shared = Model()
// ( for ocd friends ... private init() {} )
func test()->Double
{
return 3.33
}
}
Run Code Online (Sandbox Code Playgroud)
其他地方......
// file ViewController.swift, say
import UIKit
class ViewController:UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()
print("view controller loaded!")
print("singleton test! \( Model.shared.test() )")
}
}
Run Code Online (Sandbox Code Playgroud)
没问题.
public let model = Model.shared
public class Model
{
static let shared = Model()
func test()->Double
{
return 3.33
}
}
Run Code Online (Sandbox Code Playgroud)
那么,你可以简单地在项目范围内进行以下操作:
class ViewController:UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()
print("view controller loaded!")
print("singleton test! \( model.test() )")
}
}
Run Code Online (Sandbox Code Playgroud)
常规习语:
"我的"成语:
所以,这导致一切看起来很漂亮:
(在你的项目中,那些"单变量"会之类的东西scores.,networking.,heuristics.,或任何情况下可能会在您的项目.)
然后,这是一个"宏观"的成语.
唯一的目的是代码的外观.
简化的出场ImportantSystem.SharedImportantSystem下来importantSystem.整个项目.
问题可能是技术问题,风格问题或任何其他类别,只要问题非常深刻.
在功能上,这些非常相似,但我建议使用Model.shared语法因为这使得它绝对清楚,无论你在哪里使用它,你正在处理一个单身,而如果你只是那个model全球浮动那里,它不清楚你正在处理什么.
另外,对于全局变量(尤其是简单名称,如"模型"),您可能会有一些类似命名变量的未来类,并且意外地引用了错误的变量.
关于全局变量和其他模式的一般考虑的讨论,请参阅全局变量是坏的,尽管有相当的领先标题,但它提出了一个清醒的讨论,有一些有趣的链接并提出了替代方案.
顺便说一句,你的"强迫症的朋友"(中,我想我应该算我自己,因为我认为这是最好的做法),不仅将宣布init要private,但你可能会宣布全班是final,为了避免子类化(此时它对于什么shared参考变得模棱两可).
| 归档时间: |
|
| 查看次数: |
4279 次 |
| 最近记录: |