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 实例总是作为一个已存在实例的引用而不是拷贝来赋值和传递

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容