swift:谈谈swift几种常见属性的区别
2017-01-01 21:48
288 查看
一、前奏
Swift作为一门新语言,经过几年的发展,逐渐趋于完善,目前已经更新到3.0版本,它汇集许多其他语言的特点,例如JS、Paython、C++等,完全区别于OC。个人感觉它没有完全的OOP和OOD的性质。二、谈谈几种属性的区别
存储属性
定义:实实在在存储常量和变量的计算属性
定义:依赖于存储属性,通过计算得出来,它提供getter访问值,提供setter方法间接给其他属性或者变量设置值类属性
定义:其本质其实就是一个全局属性,在类里限定了其作用域,用关键字static(用于结构体和枚举中)或者class(用于类中)修饰懒加载属性
定义:该属性在使用的时候初始化一次,用关键字lazy修饰,必须进行初始化,非实例属性懒加载时在大括号{}后面要加上()全局属性
定义:类外面的属性,作用域全局。类似于OC的static修饰的属性class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //实例属性 let p = Person() //存储属性 print(p.age) //懒加载属性 print(p.name) //类属性 print(Person.height) //计算属性 print(p.getAge) //全局属性 print(commonProperty) } } //全局属性 var commonProperty = {()->String in print("Common Property1") return "Common Property" }() //类型属性,此处struct也可以是enum枚举 struct AnyStructure{ static var storedTypeProperty = "Some value" static var computedTypeProperty:Int{ return 100 } } class Person{ //类属性 class var height = {()->Int in print("Static Properties") return 170 }() //存储属性 var age = {()->Int in print("Store properties") return 26 }() //计算属性 var getAge:Int{ get{ print("Computed Properties") return age } } //懒加载属性 lazy var name = {()->String in print("Lazy Properties") return "Lazy liyang" }() //构造方法 init(){ print("init") } }
三、总结:基于类,类的构造
存储属性,最先被初始化
构造方法,仅次于存储属性调用,可以在这里对存储属性进行赋值
懒加载属性、类属性、全局属性都是在第一次使用的时候初始化一次,以后调用都不在初始化
warning:当懒加载属性是基于一个存储属性计算的时候,切勿使用懒加载属性,采用计算属性
相关文章推荐
- 几种常见的边框样式属性
- Apache与Tomcat的区别以及几种常见的web应用服务器
- css常见的易混淆属性和值的区别(一)
- 013--swift计算型属性和懒加载的区别
- 详解Nginx几种常见实现301重定向方法上的区别
- 谈谈python中类属性和类实例的属性的区别
- Nginx几种常见实现301重定向方法上的区别
- swift-计算型属性和存储型属性的区别
- JSP之WEB服务器:Apache与Tomcat的区别 ,几种常见的web/应用服务器
- JSP之WEB服务器:Apache与Tomcat的区别 ,几种常见的web/应用服务器
- 自我理解,vs2010中常见的几种应用程序的区别
- 几种常见的Map的区别
- 几种常见的I/O模型及其区别
- swift学习笔记--计算属性和存储属性的区别
- 几种常见的光纤接头(ST,SC,LC,FC)以及PC、APC和UPC的区别
- JavaScript中常见的几种创建对象的方式:基于对象扩充属性和方法、基于工厂方式创建对象、基于构造函数和基于原型
- Apache与Tomcat的区别 ,几种常见的web/应用服务器
- 【牛刀小试】——Repeater控件常见错误及几种相似控件的区别
- Swift 中计算型属性 和 懒加载 的区别
- jQuery的几种属性数值的区别attr、data、prop复制属性的时候的区别