刷新课程的最佳方法

时间:2016-10-04 14:01:57

标签: ios iphone swift

简单地说我想知道什么是刷新类的最佳方法。就像我们将一些数据传递给该类的应用程序的diff-diff部分使用相同的类时一样,我可以通过简单地采用全局变量来实现并从其他课程中改变它的价值但是我想知道另一种最适合这类事物的方法。

3 个答案:

答案 0 :(得分:1)

处理这种类型的结构的最佳方法是使类成为单例,其中类需要在其他MVC之间有效共享。这意味着只使用了一个类的一个实例。这样,如果一个MVC更改了类,则不需要同步更改,因为每个MVC都使用相同的实例。

要使课程成为单身人士,请执行以下操作

创建一个静态var,它是类

的一个实例

将init函数设为私有,以便其他类不能初始化它

例如

class Singleton {

    static var shared = Singleton()

    var info = "singleton info variable"

    private init() {}

    func doSomething() {}

}

要访问该课程,请执行以下操作

Singleton.shared.doSomething()

let singletonInfo = Singleton.shared.info

答案 1 :(得分:1)

您有两种选择:

(简体) - 您要么创建一个新实例并将其传递出去:

class MyClass {
    let name: String
    init(name: String) { self.name = name }
}

class MyViewController: UIViewController {
    let myClass = MyClass(name: "Hello World")

    func actionThatCausesSegue() {
       let copyOfMyClass = MyClass(name: self.myClass.name)
       self.performSegueWithIdentifier(identifier: "MySegue", sender: copyOfMyClass)
    }
}

或者您可以使用结构:

struct MyStruct {
    let name: String
    init(name: String) { self.name = name }
}

class MyViewController: UIViewController {
    let myStruct = MyStruct(name: "Hello World")

    func actionThatCausesSegue() {
       // structs are always copied when passed around.
       self.performSegueWithIdentifier(identifier: "MySegue", sender: self.myStruct)
    }
} 

当你传递它们时,总是复制结构。以下是Apple的Swift编程语言指南中的解释:

  

结构和枚举是值类型

     

值类型是一种类型,其值在分配给a时被复制   变量或常量,或传递给函数时。

     

你实际上已经在整个过程中广泛使用了价值类型   前几章。实际上,Swift-integers中的所有基本类型,   浮点数,布尔值,字符串,数组和字典   值类型,并在幕后实现为结构。

     

所有结构和枚举都是Swift中的值类型。

您可以阅读有关差异的更多信息here.

答案 2 :(得分:0)

这取决于具体情况,但我有时会为iOS中的视图执行此操作。例如,当数据模型发生更改时,您希望视图更新,因此我在控制器中实现了一个名为configureThingyViewWithThingy的方法,该方法采用了新的方法。并更新视图。然后,您用于监视数据模型更改(KVO,通知等)的任何机制都将调用此方法以使用新数据重新配置视图。