一、编程范式
- Swift可以面向协议编程、面向函数编程、面向对象编程。
- OC主要是面向对象编程。
二、类型安全
- Swift是一个类型安全的语言。例如定义一个NSString,不能传递给其int。
- OC则不尽然。
三、值类型增强
- 在Swift中,典型的有struct、enum以及tuple都是值类型。平常使用的int、double、float、string、array、dictionary、set也都是结构体实现的,所以也是值类型。
- 而OC中NSString、NSNumber以及集合对象都是指针类型的。
四、枚举增强
- Swift中的枚举,支持整形、浮点型、字符等,而且还能有自己的属性和方法,甚至支持协议、扩展、泛型等。
- 而OC中的枚举只是一个标记值而已。
五、泛型
- Swift支持泛型。
六、协议和扩展
- Swift对协议的支持更加丰富,配合扩展(extension)、泛型、关联类型等可以实现面向协议的编程。
- OC的协议缺乏约束,而且optional会出现很多问题。
七、函数和闭包
- Swift中函数是一等公民,可以直接定义函数类型的变量、将函数作为参数传递、将函数作为返回值返回。
- OC中函数是次等公民,需要block或者selector
网友评论