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区别: 1.swift程序的入口是UIApplicationMain; 2.OC的类是...
    ZealPenK阅读 1,556评论 0 52
  • swift:快速、现代、安全 取消了oc的指针及其他不安全访问的使用 1.引入了Optional 可选类型 2.支...
    lllaa阅读 527评论 0 0
  • 一、编程范式 Swift可以面向协议编程、面向函数编程、面向对象编程。 OC主要是面向对象编程。 二、类型安全 S...
    里克尔梅西阅读 934评论 0 0
  • 一、swift与OC的共同点: 1、OC出现过的绝大数概念,比如ARC、协议、扩展类、匿名函数等,在swift中继...
    勇敢的我2017阅读 2,995评论 0 0
  • 1.Swift可以面向协议编程、函数式编程、面向对象编程。 2.Swift是类型安全的,代码中使用字符串Strin...
    robin2005阅读 2,962评论 3 9