结构与类
#ios #swift #struct #class

结构和类是任何面向对象语言的支柱。主要部分是决定何时使用哪一个。为了获得这个问题的答案,我们需要知道它们在属性方面有何不同。让我们一一检查 -

1。参考vs副本 - 类在参考类型上工作,而结构在复制类型上工作。假设您创建一个实例A,然后通过为其分配A创建另一个实例B。现在根据其类型检查其效果 -
1. class - >在A或B中的更改也会显示另一个的变化,因为它们指向相同的地址。
2. struct - >在A或B中更改不会影响其他情况,因为两个实例都是分开的。 B就像是A。

的独立副本

2。继承 - 类使我们可以继承其他类,而结构不支持继承。

类Sentaritance - 代码段下面显示B类如何继承A类A。

class classA{
    var name = ""
}
class classB:classA{
    let type = ""

    func updateName(){
        //accessing property of inherited class A
      name = "updated name"
    }
}

struct继承 - structs不支持继承,因此,如果我们这样做,则会出现错误。

Image description

3。 init - structs带有默认的init函数,包括所有属性,称为属性wise初始化。在课堂上您需要编写自己的初始功能。

class classA:NSObject{
    var name:String

    init(userName:String){
        name = userName
    }
}

struct structA{
    var name:String
    var skills:String
}

func demoOfInit(){
    let classObj = classA(userName: "class")
    let structObj = structA(name: "struct", skills: "default init")
}

4。 DEINIT函数 - 类为我们提供了DEINIT功能,而在struct中没有这样的功能。

class classA:NSObject{
    var name:String

    init(userName:String){
        name = userName
    }

    deinit{

    }
}

现在基于上述差异,您可以轻松地决定我们对特定情况的偏好。

一个示例可以是模态 - >在模态中我们选择结构,因为我们通常不需要它们的引用或继承,因为它们通常被用作独立对象。