美文网首页
swift和OC的比较

swift和OC的比较

作者: _苏丽君_ | 来源:发表于2019-11-21 16:29 被阅读0次

swift ----OC比较

编程范式

Swift 可以面向协议编程、函数式编程、面向对象编程。
Objective-C 以面向对象编程为主,当然你可以引入类似ReactiveCocoa的类库 来进行函数式编程。

类型安全

Swift 是一门类型安全的语言。鼓励程序员在代码中清楚明确值的类型。如果代码中使 用一个字符串 String,那么你不能错误地传递一个整型 Int 给它。因为 Swift 是类型安 全的,它会在代码编译的时候做类型检查,并且把所有不匹配的类型作为一个错误标记 出来。这样使得程序员在开发中尽可能早地发现和修正错误。
而 Objective-C 则不然,你声明一个 NSString 变量,仍然可以传一个 NSNumber 给 它,尽管编译器会抱怨,但是你仍然可以作为 NSNumber 来使用它。

值类型增强

在 Swift 中,典型的有 struct、enum 以及 tuple 都是值类型。而平时使用的 Int、 Double、Float、String、Array、Dictionary、Set 其实都是用结构体实现的,也是值 类型。
Objective-C中,NSNumber、NSString以及集合类对象都是指针类型。

枚举增强

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

泛型

Swift 中支持泛型,也支持泛型的类型约束等特性。
苹果推出了 Swift 2.0 版本,为了让开发者从 Objective-C 更好地过渡到 Swift 上, 苹果也为 Objective-C 带来了 Generics 泛型支持,不过 Objective-C 的泛型约束也 仅停留在编译器警告阶段。

协议和扩展

Swift 对协议的支持更加丰富,配合扩展(extension)、泛型、关联类型等可以实现面 向协议编程,从而大大提高代码的灵活性。同时,Swift 中的 protocol 还可以用于值类 型,如结构体和枚举。
协议和扩展
Objective-C 的协议缺乏强约束,提供的 optional 特性往往成为很多问题的来源,而如 果放弃 optional 又会让实现代价过大。

函数和闭包

Swift 函数是一等公民,可以直接定义函数类型变量,可以作为其他函数参数传递, 可以作为函数返回值返回。
函数和闭包
Objective-C 里面函数仍然是次等公民,需要 selector 封装或者使用block才能模拟 Swift 中类似的效果。

相关文章

  • OC和Swift比较

    OC与swift 1.协议 OC:主要用来传值 swift:不仅可以用来传值,swift中的协议可以定义属性方法,...

  • swift和OC的比较

    swift ----OC比较 编程范式 Swift 可以面向协议编程、函数式编程、面向对象编程。Objective...

  • Swift 和 OC 的比较

    二者联系 1、Swift 与 OC 共用一套运行时环境: Swift 的类型可以桥接到 OC 的类型,反之亦然。S...

  • oc Swift 混编

    oc Swift 混编 oc 项目 混编Swift1.1 oc 调用 Swift 的类 和 方法步骤: ...

  • Swift static和class理解

    Static 对比OC ,OC的理解还是比较简单 : static和class Swift的理解 参考 : Th...

  • WKWebView与JS的交互原理

    写的人比较多,自己亲自写一遍,记录一下!OC和Swift两个版本,原理比较简单,UI如下: OC、Swift调用J...

  • Swift与OC的使用异同笔记

    OC与Swift的比较 OC是一门消息传递语言,Swift采用安全的编程模式,并添加新的功能,界面基于Cocoa和...

  • OC和Swift混编

    OC和Swift的混编,分为两种情况: OC项目中嵌入Swift文件 Swift项目中嵌入OC文件 先来看OC项目...

  • OC Swift文件混编

    一.Swift 类可以继承 OC 类,OC 类不能继承 Swift 类。 二.Swift 和 OC 混编 三.两个...

  • Swift和OC混合开发

    在swift项目上的Swift和OC混合开发 1、Swift调OC方法: (1)、直接新建OC项目会自动创建桥梁文...

网友评论

      本文标题:swift和OC的比较

      本文链接:https://www.haomeiwen.com/subject/nrhaictx.html