- 编程范式
swift可以面向协议编程、函数式编程、面向对象编程
OC面向对象,可以引入RectiveCocoa的类库来进行函数式编程
2.类型安全
swift是类型安全的语言,在编译的时候做类型检查
OC不是类型安全的语言,声明一个NSString变量,但依然可以传NSNumber给它
3.值类型增强
swift中,struct、enum以及tuple都是值类型,平时使用的Int、Double、Float、String、Array、Dictionary、Set都是结构体实现的,也是值类型
OC中,NSNumber、NSString及集合对象都是指针类型
4.泛型
Switt中支持泛型,也支持泛型的类型约束等特性。
苹果推出了Swift2.0版本,为了让开发者从Objective-C更好地过渡到Swift上, 苹果也为Objective-C带来了Generics泛型支持,不过Objective-C的泛型约束也 仅停留在编译器警告阶段。
5.协议和扩展
Switt对协议的支持更加丰富,配合扩展(extension)、泛型、关联类型等可以实现面 向协议编程,从而大大提高代码的灵活性。同时,Swift中的protocol还可以用于值类 型,如结构体和枚举。
Objective-C的协议缺乏强约束,提供的optional特性往往成为很多问题的来源,而如 果放弃optional又会让实现代价过大。
6.函数和闭包
Swift函数是一等公民,可以直接定义函数类型变量,可以作为其他函数参数传递, 可以作为函数返回值返回。
Objective-C里面函数仍然是次等公民,需要selector封装或者使用block才能模拟 Swift中类似的效果。