【问题标题】:correct use of the MVC and Singleton Swift正确使用 MVC 和 Singleton Swift
【发布时间】:2015-09-08 05:12:23
【问题描述】:

我有几个应用程序已获得 Apple 的批准,但我正在尝试了解 MVC 模式,尤其是 Singleton 类。我现在正在修改我的代码以遵循这种模式。我已经尝试过 Singleton 课程,但我错过了一些东西。 sharedInstance 中的值在我的模型类中可用,但我找不到这个简单问题的答案;

我有一个名为“Data”的类,我是创建单例类并将其设为“Data”的子类,还是将“Data”类设为 Singleton 并私有我的所有函数?我的主要问题是了解如何在不使用 Segue 的情况下在类之间传递数据。

【问题讨论】:

  • 能否请您更清楚地说明问题陈述。
  • 无论如何,单身人士都被认为是糟糕的。最好通过 segue 传递对数据模型的引用。
  • 我不能使用 Segue,因为 .swift 文件没有 UI!我通常理解为什么我会使用 Singleton,但我想将其用作 MVC 模式的一部分。我可以创建一个带有类的 .swift 文件并创建该类的 sharedInstance 吗?允许视图和控制器对我的模型数据进行全局访问,同时将该类中的所有函数设为私有以防止多个实例?

标签: ios swift singleton


【解决方案1】:

首先,segues 用于在视图控制器而不是简单对象之间传递数据。

关于你关于单身的问题,我是这样做的:

class MyClass {

    // Swift's let is lazy-initialized and is thread safe.
    static let sharedSingleton = MyClass()

    private init() {}

    private func printSomething(){
        println("Something")
    }
}

并使用它:

MyClass.sharedSingleton.printSomething()

【讨论】:

  • 不,我使用 Segues 在 ViewControllers 之间传递数据,但我没有 MVC 模式。对于每个 ViewController,我都有该 View 的数据。所以我的理解是;我创建一个带有类的 .swift 文件并创建该类的 sharedInstance?允许视图和控制器对我的模型数据进行全局访问,同时将该类中的所有函数设为私有以防止多个实例?
  • 坦率地说,我不明白你到底打算做什么。无论如何,你可以观看由 stanford 提供的第 7 课(多个 MVC),非常有价值:web.stanford.edu/class/cs193p/cgi-bin/drupal 讲座可通过 iTunesU 免费获得。希望对您有所帮助。
  • 好的,谢谢您的回复。我想我知道正确的方法,而且我已经听过斯坦福的视频了。
  • Swift 与 Objective C 的不同之处在于它希望您尽可能多地使用结构、枚举和类型。结构是按值传递(复制)的,因此您不必冒模型对象从不同位置更改的风险。对象通过引用传递,因此更加不安全。您可以使用委托在类之间传递值,这对于异步调用后端数据库等非常有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2023-04-03
  • 1970-01-01
  • 2015-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多