swift 知识点-day1
1. 说说 OC 与 swift 之间的区别和联系
- swift 是强类型语言,OC 是弱类型语言;
- swift 语法更简洁,且源码文件仅有一个且以
.swift 结尾;
- OC出现过的绝大多数概念,比如引用计数、ARC、属性、协议、接口、初始化、扩展类、命名参数、匿名函数等,在Swift中继续有效;
- OC 之前积累的很多类库,在 Swift 中大部分依然可以直接使用;
- swift 和 OC 可以通过 bridge 进行 class 文件的桥接使用;
- swift 出现了泛型、元组、可选等新概念;
- 运行时环境不同:OC 运行在
Mach-O 和 Cocoa 框架上,而 swift 则运行在 Swift 运行时和 Core Foundation 框架上。(这些不同运行时环境对应用程序的性能和行为产生了影响。例如,Swift运行时采用了并发编程模型,因此Swift应用程序在多线程处理方面表现得更加优秀);
2. 谈谈 class 和 struct 之间的区别
- 最大区别:struct是值类型,拷贝时是值拷贝;class是引用类型,拷贝时是指针拷贝;
- struct 分配在栈上,class 分配在堆中;
- struct 不能被继承,class 则可以;
- 类中的每一个成员变量都必须被初始化,否则编译器会报错。而结构体不需要,编译器会自动帮我们生成 init 函数,给变量赋一个默认值;
- class 遵守了协议但没有实现会报错,struct 则不会;
- struct 不支持单例,class 则可以;
- struct 不能被序列化为 Data,不能归解档;
- 混开时,struct 不能被 OC 文件使用,class 则可以;
- class 可以使用 OC 的运行时,struct 不可以;
- struct 不能遵守 NSobjectProtocol 协议;
3. swift 哪些类型是值类型
- 结构体(struct)
- 枚举(enum)
- 元组(tuple)
- 基本数据类型(Int, Double, Float, String, Character)
- 字符串(String )
- 数组(Array)
- 字典(Dictionary)
- Set