任何不使用的理由在Swift中使用单例“变量”?

任何不使用的理由在Swift中使用单例“变量”?,第1张

概述对于2015年9月,这里正是你如何在 Swift中创建一个单例: public class Model { static let shared = Model() // ( for ocd friends ... private init() {} ) func test()->Double { return 3.33 对于2015年9月,这里正是你如何在 Swift中创建一个单例:

public class Model    {    static let shared = Model()    // ( for ocd frIEnds ... private init() {} )    func test()->Double        {        return 3.33        }    }

其他地方……

// file VIEwController.swift,sayimport UIKitclass VIEwController:UIVIEwController    {    overrIDe func vIEwDIDLoad()        {        super.vIEwDIDLoad()        print("vIEw controller loaded!")        print("singleton test! \( Model.shared.test() )")        }    }

没问题.

然而.我加上这个小东西……

public let model = Model.sharedpublic 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()…你在代码库中到处都看到了这个

所以,这导致一切看起来很漂亮:

(在你的项目中,那些“单例变量”将是分数,网络,启发式等,或者你的项目中的任何情况.)

然后,这是一个“宏观”的成语.

唯一的目的是代码的外观.

将importantSystem.SharedimportantSystem的外观简化为importantSystem.整个项目.

任何人都可以看到这个成语有什么问题吗?

问题可能是技术问题,风格问题或任何其他类别,只要问题非常深刻.

解决方法 在功能上,这些非常相似,但我建议使用Model.shared语法因为这使得它绝对清楚,无论你在哪里使用它,你正在处理单例,而如果你只是让那个模型全局浮动那里,目前尚不清楚你在处理什么.

另外,对于全局变量(尤其是简单名称,如“模型”),您可能会有一些类似命名变量的未来类,并且意外地引用了错误的变量.

关于全局v单体与其他模式的一般考虑的讨论,请参阅Global Variables Are Bad,尽管有相当的标题,但它提出了一个清醒的讨论,有一些有趣的链接并提出了替代方案.

顺便说一句,对于你的“OCD朋友”(我猜我必须在其中,因为我认为这是最好的做法),不仅要声明init是私有的,而且你可能会声明整个类是最终的,避免子类化(此时它对共享引用变得模糊).

总结

以上是内存溢出为你收集整理的任何不使用的理由在Swift中使用单例“变量”?全部内容,希望文章能够帮你解决任何不使用的理由在Swift中使用单例“变量”?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/999791.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-21
下一篇2022-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存