Swift 类和结构体 class and struct

对比

相同点:
定义属性用来存储值;
定义方法用于提供功能;
定义下标脚本用来允许使用下标语法访问值;
定义初始化器用于初始化实例;
可以被扩展来实现默认所没有的功能;
遵循协议来针对特定类型提供标准功能。

不同点:
继承可以继承而结构体不可以;
类型转换允许你在运行检查和解释一个类实例的类型;
反初始化器允许一个类实例释放任何其所被分配的资源;
引用计数允许多个变量对同一个类实例进行引用。
结构体可以自动获得一个成员初始化器,而类不会有

struct Resolution {
      var width = 0
      var height = 0 
}     

let vga = Resolution(width: 640, height: 480)

1、使用 ===!=== 来判断两个对象是否引用同一个类对象

    let tenEighty = VideoMode()
    tenEighty.resolution = hd
    tenEighty.interlaced = true
    tenEighty.name = "1080i"
    tenEighty.frameRate = 25.0

    let alsoTenEighty = tenEighty
    alsoTenEighty.frameRate = 30.0

    if tenEighty === alsoTenEighty {
        print("tenEighty and alsoTenEighty refer to the same VideoMode instance.")
    }
    // prints "tenEighty and alsoTenEighty refer to the same VideoMode instance."

2、Swift 的 String , Array 和 Dictionary类型是作为结构体来实现的,字符串,数组和字典在它们被赋值到一个新的常量或者变量,或者它们被传递到一个函数或方法中的时候,其实是传递了拷贝。
而 NSString, NSArray和 NSDictionary 实例总是作为一个已存在实例的引用而不是拷贝来赋值和传递

你可能感兴趣的:(Swift 类和结构体 class and struct)