快速的属性是什么?

在初学者级别,所有开发人员都对属性有一些疑问,例如什么是属性?什么类型的属性? ,什么时候使用哪种类型? 。 所以在这里我想快速给出一些有关属性的想法。

有什么属性?
“简单来说,属性具有一些您想在应用程序或班级中出于任何原因访问的值”
例如 :-

var intVal = 2;
var strVal =“世界你好”

因此,在这些示例中,“ intVal”和“ strVal”是具有某些值的属性。
但是现在的问题是,财产是否总是具有某些价值? 没有任何动态价值?
答案是“是的,它可以具有运行时间(动态值)”。

所以现在属性类型出现了。 它有两种类型:
1)储物
2)计算财产

常量和可变值作为实例。 例如
1)变量a = 5

在这里,变量“ a”存储整数值5。我们使用var关键字定义了变量“ a”,这意味着其值b可以更改。

print(a)// 5
a = 7 //更新a的值
print(a)// 7

2)让a = 5

它的工作原理同上,但不同之处在于它的值无法更改。
a = 7 //编译器抛出错误

3)var a:整数!

这里我们没有给变量a赋值。 因此,Int的默认值会自动分配给变量a。

因此,当您不需要通过任何计算获得任何动态值时,可以使用var或let来使用存储的属性。

在开发过程中,某些情况下,由于计算能力有限或其他原因,您只想在需要时才创建一些对象。 因此,在这种情况下,您可以使用惰性属性。

好处:
1)延迟对象创建。
2)它不会使用最大的计算能力,因为它将在实际使用时进行初始化。

例如,我们可以将Refresh Control的实例声明为Lazy,因为只有当您将tableview下拉时,它的实例才会被使用。

 惰性var refreshControl:UIRefreshControl = { 
让refreshControl = UIRefreshControl()refreshControl.addTarget(self,action:“ handleRefresh:”,forControlEvents:UIControlEvents.ValueChanged)
返回refreshControl
}()

计算属性不同于存储属性,因为存储属性在初始化时没有任何赋值,而是提供了一个getter和一个可选的setter来间接检索和设置其他属性和值。

  var a = 0.0,var b = 0.0 
var长度= 10.00,宽度= 20.00 var区域:Double {
得到{
返回长度*宽度
}

set(area){//您可以使用任何名称作为参数
a =面积/ 2
b =面积* 2
}
}
var someArea =面积
print(area)//打印200,作为由10 * 20调用的getter
area = 50 //现在将调用setter
print(a)//通过计算50/2打印25
print(b)//通过计算50 * 2来打印100

| 由于setter对于计算属性是可选的,如果只希望使用getter,则将其称为Computed Read Only属性 。 您可以将其用作:

  var区域:Double { 
返回长度*宽度
}

如果要将get关键字用作只读属性,则可以消除它。

您不能将let关键字用于计算属性,因为其值不会保持固定,它将由其他变量计算。

您可以将Computed属性用作属性观察器。 让我们通过示例来了解它:

  var area:Double = 0 { 
willSet(newArea){
打印(“总面积为:\(newArea)”)
}

didSet {
如果area> oldArea {
打印(“新计算的面积\(area- oldArea)”)
}
}
}
面积= 100
面积= 800输出:
总面积是:100
新计算面积100
总面积是:800
新计算面积700

如您在上面的示例中看到的,它可以由wiillSetdidSet定义
在设置新值之前将调用willSet,在设置新值之后将调用didSet

什么时候使用哪种类型的财产?

  • 在这种情况下,当您只需要访问某个固定值时,则可以根据需要使用varlet来使用Stored属性
    例如:-

let identifier = "ItemCell"
cell = tableView.dequeueReusableCellWithIdentifier(identifier)! as UITableViewCell

  • 在这种情况下,当您要求属性依赖于其他属性的值并且必须进行一些计算时,则可以根据需要使用Compulated属性或Compute Read属性
  • 在这种情况下,当您需要了解属性的先前值新值时,可以将Computed属性用作属性观察器。