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

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

 

posted on 2016-06-07 10:57  爱你久久iOS  阅读(190)  评论(0编辑  收藏  举报

导航