Ios 刷新类的最佳方法

Ios 刷新类的最佳方法,ios,iphone,swift,Ios,Iphone,Swift,我只是想知道刷新类的最佳方法是什么。比如,当应用程序的diff-diff部分使用相同的类时,我们将一些数据传递给该类,我可以通过简单地获取一个全局变量并更改其他类的值来实现这一点,但我想知道另一种最适合这种情况的方法。处理此类结构的最佳方法是将该类设置为单例,因为此类结构需要在其他MVC之间有效共享。这意味着一个类只能使用一个实例。这样,如果一个MVC更改了类,则不需要同步更改,因为每个MVC都使用相同的实例 要使一个类成为单例类,您需要执行以下操作 Singleton.shared.doSom

我只是想知道刷新类的最佳方法是什么。比如,当应用程序的diff-diff部分使用相同的类时,我们将一些数据传递给该类,我可以通过简单地获取一个全局变量并更改其他类的值来实现这一点,但我想知道另一种最适合这种情况的方法。

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

要使一个类成为单例类,您需要执行以下操作

Singleton.shared.doSomething()
创建一个静态变量,它是类的实例

使init函数私有,这样其他类就不能初始化它

乙二醇

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

Singleton.shared.doSomething()


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

要使一个类成为单例类,您需要执行以下操作

Singleton.shared.doSomething()
创建一个静态变量,它是类的实例

使init函数私有,这样其他类就不能初始化它

乙二醇

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

Singleton.shared.doSomething()


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

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

您有两个选项:

(简化)-创建新实例并将其传递:

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)
    }
} 
在传递结构时,它们总是被复制的。以下是苹果公司《Swift编程语言指南》的解释:

结构和枚举是值类型

值类型是一种类型,其值在指定给 变量或常量,或将其传递给函数时

实际上,在整个过程中,您一直在广泛使用值类型 前几章。事实上,Swift整数的所有基本类型, 浮点数、布尔值、字符串、数组和字典 值类型,并在后台实现为结构

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

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

您有两个选择:

(简化)-创建新实例并将其传递:

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)
    }
} 
在传递结构时,它们总是被复制的。以下是苹果公司《Swift编程语言指南》的解释:

结构和枚举是值类型

值类型是一种类型,其值在指定给 变量或常量,或将其传递给函数时

实际上,在整个过程中,您一直在广泛使用值类型 前几章。事实上,Swift整数的所有基本类型, 浮点数、布尔值、字符串、数组和字典 值类型,并在后台实现为结构

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


您可以阅读更多关于差异的信息

好的,我给您介绍一下情况,当用户从其他3个不同的类访问同一个类a时。当时api命中率取决于您从哪个类访问当前的类a。当时我需要比较全局变量还是需要其他东西。我真的不明白您在问什么。不清楚是否有同一类的一个实例或三个实例。我不知道这种混乱是来自语言障碍,还是对技术术语的误解。如果你有人能说一口流利的英语和你的母语,也能理解所使用的技术术语,让他们帮助你提问,从而获得更好的答案。很抱歉帮不上什么忙,继续学习:)好的,我告诉你情况,当用户从其他3个不同的类访问同一个类a时。当时api命中率取决于您从哪个类访问当前的类a。当时我需要比较全局变量还是需要其他东西。我真的不明白您在问什么。不清楚是否有同一类的一个实例或三个实例。我不知道这种混乱是来自语言障碍,还是对技术术语的误解。如果你有人能说一口流利的英语和你的母语,也能理解所使用的技术术语,让他们帮助你提问,从而获得更好的答案。抱歉没有太多帮助,继续学习:)我想知道当其他类访问某个类时刷新该类。我是否需要在该类中获取一个全局变量,并从其他类中设置它的值,然后比较它以执行特定任务。是的,这可以做到。这实际上是一个全球性的课程,所以如果你