GeekBand.Swift-结构与枚举

2016/5/16 posted in  iOS学习笔记  

结构和枚举在swift中,应用范围和能力相比OC来说有很大的扩展

Struct结构

  • Struct是一个值类型,在拷贝时进行值拷贝。
  • 虽然在Swift中,Struct可以定义方法。但是,struct不支持面向对象。主要用于定义轻量级的数值类型,如Point。
  • 不要在Struct中定义引用类型,会使值拷贝类型不纯粹!
  • struct支持属性,方法,下标,初始化器。还支持类型扩展和协议
struct Point{
    var x:Int;
    var y:Int;
}

Struct和Class

  • 相同点:
    1. 都可以定义以下成员:属性、方法、下标、初始化器
    2. 都支持类型扩展、协议
  • 不同点:
    1. 类支持继承和多态,结构不支持
    2. 类必须自己定义初始化器,结构会有默认的按成员初始化器
    3. 类支持析构器,结构不支持
    4. 类的实例放在堆上,由ARC负责管理。结构的实例在栈上,方法结束后自动释放。
    5. 类支持引用比较。结构不支持。

Enum枚举

  • enum用于定义一组相关的值成员。属于值类型,具有值拷贝语义。
  • 可以使用switch—case语句处理enum,但是case必须包括所有的枚举值,或者使用default语句。
  • enum可以指定原始值(rawValue),类型可以是字符、字符串、整数、浮点数。数值类型默认从0开始,依次递增。字符串类型默认与枚举值名称相同。
  • enum可以设置关联值,设置不同类型的值成员,类似于联合数据结构。
  • 还可定义:计算属性、方法、初始化器
//定义枚举类型
enum Color {
    case Red
    case Green
    case Blue
}

enum ComplexColor{
    case Red,Green,Blue,Alpha
}

var c1=Color.Red
var c2:Color
c2 = Color.Green
c1 = .Blue
var c3=c1


func print(color: Color){
    
    switch color {
    case .Red:
        print("Red Color!")
    case .Green:
        print("Green Color!")
    case .Blue:
        print("Blue Color!")
    }
    
}