swift 知识点-day1

103 阅读2分钟

1. 说说 OC 与 swift 之间的区别和联系

  1. swift 是强类型语言,OC 是弱类型语言;
  2. swift 语法更简洁,且源码文件仅有一个且以 .swift 结尾;
  3. OC出现过的绝大多数概念,比如引用计数、ARC、属性、协议、接口、初始化、扩展类、命名参数、匿名函数等,在Swift中继续有效;
  4. OC 之前积累的很多类库,在 Swift 中大部分依然可以直接使用;
  5. swift 和 OC 可以通过 bridge 进行 class 文件的桥接使用;
  6. swift 出现了泛型、元组、可选等新概念;
  7. 运行时环境不同:OC 运行在 Mach-OCocoa 框架上,而 swift 则运行在 Swift 运行时和 Core Foundation 框架上。(这些不同运行时环境对应用程序的性能和行为产生了影响。例如,Swift运行时采用了并发编程模型,因此Swift应用程序在多线程处理方面表现得更加优秀);

2. 谈谈 class 和 struct 之间的区别

  1. 最大区别:struct是值类型,拷贝时是值拷贝;class是引用类型,拷贝时是指针拷贝;
  2. struct 分配在栈上,class 分配在堆中;
  3. struct 不能被继承,class 则可以;
  4. 类中的每一个成员变量都必须被初始化,否则编译器会报错。而结构体不需要,编译器会自动帮我们生成 init 函数,给变量赋一个默认值;
  5. class 遵守了协议但没有实现会报错,struct 则不会;
  6. struct 不支持单例,class 则可以;
  7. struct 不能被序列化为 Data,不能归解档;
  8. 混开时,struct 不能被 OC 文件使用,class 则可以;
  9. class 可以使用 OC 的运行时,struct 不可以;
  10. struct 不能遵守 NSobjectProtocol 协议;

3. swift 哪些类型是值类型

  1. 结构体(struct)
  2. 枚举(enum)
  3. 元组(tuple)
  4. 基本数据类型(Int, Double, Float, String, Character)
  5. 字符串(String )
  6. 数组(Array)
  7. 字典(Dictionary)
  8. Set