[swift学习之十四]计算属性和存储属性

原创 2016年05月30日 13:33:49
//------------------------//
/*
 注意点
 1:willSet得注意大小写,写错了,不认识,而且还没有书写提示。
 2:存储属性只要合法,不用指明类型或者初始值,都可以加willSet.
 3:即使是相同的值,也会调用
 4:willSet和didSet只能用于存储属性。set和get只能用于计算属性,但没有只写属性。
*/
/*8,和Int64一样,8个字节。*/
print(sizeof(Int))
class OnlyOneCalculateProperty:NSObject{
    var PropertyName:Int{
        get{
            return 30
        }
        set(NewValue){
           print(NewValue)
        }
    }
}
/*16。可见计算属性不占存储空间,和没有一样大小。计算属性set和get里面要注意死循环哈~!*/
print(class_getInstanceSize(OnlyOneCalculateProperty))
class OnlyOneStoreProperty:NSObject{
    var PropertyName:Int = 0{
        willSet(newValue){
            print("将要设定age,原值:\(PropertyName),新值:\(newValue)")
        }
        didSet(oldValue){
            print("将要设定age,原值:\(oldValue),新值:\(PropertyName)")
        }
    }
}
/*24。可见存储属性占用存储空间,多了8字节。*/
print(class_getInstanceSize(OnlyOneStoreProperty))
class Person:NSObject{
    var age:Int = 30 {
        willSet(newValue){
            print("将要设定age,原值:\(age),新值:\(newValue)")
        }
        
        didSet(oldValue){
            print("将要设定age,原值:\(oldValue),新值:\(age)")
        }
   }
    var Weight:Int{
        get{
            print("获取Weight属性值:\(75)")
            return 75
        }
        set(newValue){
            print("设置Weight属性值:\(newValue)")
        }
    }
}
/*计算属性可以被子类覆盖,存储的不可以哦~!*/
class Student: Person{
override var Weight: Int{
        get{
            print("获取Weight属性值:\(70)")
            return 70
        }
        set(newValue){
            print("设置Weight属性值:\(newValue)")
        }
    }
}
let P = Person()
P.Weight = 80
print(P.Weight)

let S = Student()
S.Weight = 80
print(S.Weight)

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Swift编程语言学习9—— 存储属性和计算属性

属性将值跟特定的类、结构或枚举关联。存储属性存储常量或变量作为实例的一部分,计算属性计算(而不是存储)一个值。计算属性可以用于类、结构体和枚举里,存储属性只能用于类和结构体。   存储属性和计算属性通...

《从零开始学Swift》学习笔记(Day 31)——存储属性

原创文章,欢迎转载。转载请注明:关东升的博客  Swift中的属性分为存储属性和计算属性,存储属性就是Objective-C中的数据成员,计算属性不存储数据,但可以通过计算其他属性返回数据。存储属性可...

swift学习记录(存储属性)

属性 属性将值跟特定的类、结构体和枚举关联。 swift中的属性分为存储属性和计算属性两种。 存储属性: 一个存储属性就是存储在特定类或结构体的实例里的一个常量或变量。存储属性可以是变量存...

《从零开始学Swift》学习笔记(Day 38)——构造函数与存储属性初始化

构造函数的主要作用是初始化实例,其中包括:初始化存储属性和其它的初始化。在Rectangle类或结构体中,如果在构造函数中初始化存储属性width和height后,那么在定义他们时就不需要初始化了。 ...

《从零开始学Swift》Swift 2.0学习笔记(Day 38)——构造函数与存储属性初始化

原创文章,欢迎转载。转载请注明:关东升的博客  构造函数的主要作用是初始化实例,其中包括:初始化存储属性和其它的初始化。在Rectangle类或结构体中,如果在构造函数中初始化存储属性width和he...

Swift 系统学习 24 类相关 存储属性 计算属性 类型属性 延迟加载属性

import UIKit /* * 本节主要内容:存储属性 / 计算型属性 / 类型属性 / 延迟加载属性 */ // 类型属性(Type Property) // 声明描述玩家类, 记录每个...

Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等

写了12个Person来复习,不过完成同样的代码需要敲键盘的次数相比OC确实少了很多,这很多应该归功于Swift中不写分号,以及少了OC中的中括号。 一、类与结构体 两者在Swift中差不...

Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等

一、类与结构体 两者在Swift中差不了多少了 类与结构体有很多相同的地方: (第2,3点是其他语言中不存在的) 1)都可以定义属性/方法/下标(结构体也可以定义方法了) 2)都能初始化(...

Object-C--->Swift之(十)存储属性

计算属性相当于Object-C的getter、setter合成的属性,在Swift中结构体、类都可以定义计算属性 定义计算属性[修饰符] var 计算属性名:属性类型{ get{ //getter...
  • IT_DS
  • IT_DS
  • 2016-01-30 12:53
  • 669

swift 学习笔记(22)-属性(存储属性/延迟属性)

属性有很多类型,比如存储属性:赋值存值的,延迟属性,差不多和 oc 中的懒加载类似,计算属性,类型属性.还有属性观察器等 存储属性class Person{ // 属性由 var 修饰,如果...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)