//: Playground - noun: a place where people can play import UIKit //----类和结构体------// //1.结构体的定义 struct Size { //结构体中的属性,给定默认值 var width = 375 var height = 667 //Swift的结构体中可以定义方法,与C、OC不同 func show() { print("((width):(height))") } } var size = Size() //结构体的构造方法来构建一个结构体实例 print(size.width) print(size.height) size.show() //2.类的定义 class Person { //类中定义的属性必须进行初始化 var name:String = "" var age:Int = 0 let sex:Int = 0 //类中方法的定义 func speak() { print("say hello name:(name),age:(age),sex:(sex)") } } //创建实例 let kathy = Person() kathy.speak() kathy.name = "Kathy" kathy.age = 10 //kathy.sex = 1 kathy.speak() //3.类中的属性可以是一个结构体变量 class View { var opacity = 1.0 var name = "" var viewSize = Size() } var myView = View() //Swift允许设置类中结构体属性的子属性 myView.viewSize.width = 480 //4.结构体和类的区别 //(1)结构体有对应的逐一构造器 var size2 = Size( 320, height: 240) size2.show() //而类中没有相应的构造器 var myView2 = View() //(2)结构体和枚举都是值类型,而类是引用类型 var size3 = size2 size2.width = 480 size2.show() size3.show() var mark = Person() mark = kathy //mark.speak() //kathy.speak() kathy.age = 30 kathy.speak() mark.speak() //类的实例的内存管理仍然使用ARC //5.===运算符:用来判断变量或者常量是否引用同一个实例,仅用于引用类型 //!==运算符 if mark === kathy { print("引用同一个实例") } //===和==,==两个实例的值是否相等,===表示是否引用同一个实例