结构和类是任何面向对象语言的支柱。主要部分是决定何时使用哪一个。为了获得这个问题的答案,我们需要知道它们在属性方面有何不同。让我们一一检查 -
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不支持继承,因此,如果我们这样做,则会出现错误。
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{
}
}
现在基于上述差异,您可以轻松地决定我们对特定情况的偏好。
一个示例可以是模态 - >在模态中我们选择结构,因为我们通常不需要它们的引用或继承,因为它们通常被用作独立对象。