swift文档笔记(十) -- 属性与方法

1.存储属性

延迟存储属性 

延迟存储属性是指当第一次被调用的时候才会计算其初始值的属性。在属性声明前使用 lazy来标示一个延迟存储属性。 

class DataManager { lazy var importer = DataImporter() 

var data = [String]()

注意:如果一个被标记为 lazy的属性在没有初始化时就同时被多个线程访问,则无法保证该属性只会被初始化一次。 


 

2.计算属性 

计算属性不直接存储值,而是提供一个 getter和一个可选的 setter,来间接获取和设置其他属性或变量的值。

如果计算属性的 setter 没有定义表示新值的参数名,则可以使用默认名称 newValue

只有 getter 没有 setter的计算属性就是只读计算属性。只读计算属性总是返回一个值,可以通过点运算符访问,但不能设置新的值。 

var center: Point {

        get {

            return Point(x: centerX, y: centerY)

        }

        set(newCenter) {

            origin.x = newCenter.x - (size.width / 2)

        }

}

var center: Point {

         get {

             return Point(x: centerX, y: centerY)

} set { 

             origin.x = newValue.x - (size.width / 2)

         }

var center: Point {

         get {

             return Point(x: centerX, y: centerY)

}



3.属性观察器

• willSet在新的值被设置之前调用
• didSet
在新的值被设置之后立即调用 

willSet观察器会将新的属性值作为常量参数传入,在willSet的实现代码中可以为这个参数指定一个名称,如果不指定则参数仍然可用,这时使用默认名称newValue表示。 

didSet观察器会将旧的属性值作为参数传入,可以为该参数命名或者使用默认参数名oldValue。如果在didSet方法中再次对该属性赋值,那么新值会覆盖旧的值。 



4.类型属性 

使用关键字 static 来定义类型属性。在为类定义计算型类型属性时,可以改用关键字 class来支持子类对父 类的实现进行重写。 



5.可变方法

结构体和枚举是值类型。默认情况下,值类型的属性不能在它的实例方法中被修改。如果你确实需要在某个特定的方法中修改结构体或者枚举的属性,你可以为这个方法选择可变(mutating)行为。



6.类型方法 

定义在类型本身的方法,这种方法就叫做类型方法。在方法的 func关键字之前加上关键字 static,来指定类型方法。类还可以用关键字 class来允许子类重写 父类的方法实现 



7.下标语法 

定义下标使用 subscript 关键字,指定一个或多个输入参数 和返回类型;与实例方法不同的是,下标可以设定为读写或只读。这种行为由 getter setter 实现,有点类 似计算型属性

subscript(index: Int) -> Int {

  get {

// 返回一个适当的 Int 类型的值

set(newValue) { // 执行适当的赋值操作 

}

  } 





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值