swift类和结构体004-类和结构体基本使用

Posted 爱你久久

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift类和结构体004-类和结构体基本使用相关的知识,希望对你有一定的参考价值。

//: 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(width: 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("引用同一个实例")
}

//===和==,==两个实例的值是否相等,===表示是否引用同一个实例

 

以上是关于swift类和结构体004-类和结构体基本使用的主要内容,如果未能解决你的问题,请参考以下文章

Swift之深入解析类和结构体的本质

Swift-类和结构体(Class and Structures)

Swift的闭包,枚举,类和结构体

Swift-类和结构体

Swift-iOS中类和结构体

《从零开始学Swift》学习笔记(Day 25)——类和结构体定义