Swift和OC的区别

一.编程范式

1.Swift可以面向协议编程,函数式编程,面向对象编程;
2.OC以面向对象编程为主,当然也可以引入类似ReactiveCocoa的类库进行函数式编程;

二.类型安全

1. Swift是一门类型安全的语言,如果代码中使用一个字符串String,那么你就不能错误的传递一个整型Int给它;
2. OC,可以声明一个NSString变量,仍然可以传一个NSNumber给它;

三.值类型增强:

1.Swift中,典型的有struct,enum,及tuple都是值类型;而平时使用的Int,Double, Float, String, Array, Dictionary,Set都是结构体实现的,也是值类型;
2.OC中,NSNumber,NSString和集合类型都是指针类型;

四.枚举增强:

1.Swift的枚举可以使用整型,浮点型,字符串,还能拥有属性和方法,甚至支持泛型,协议,扩展等等;
2.OC里面的枚举则鸡肋很多;

五.泛型

Swift支持泛型,也支持泛型的类型约束;

六.协议和扩展

1.Swift对协议的支持更加丰富,配合扩展,泛型,关联类型等可以实现面向协议编程,从而大大提高代码的灵活性,同时,Swift中的protocol还可以用于值类型,结构体和枚举;
2.OC的协议缺乏强约束;

七.函数和闭包

1.Swift的函数是一等公民,可以直接定义函数类型变量,可以作为其他函数参数传递,可以作为函数返回值返回;
2.OC中函数仍是次等公民,需要selector封装或者使用block才能模拟swift中类似的效果

你可能感兴趣的:(Swift和OC的区别)