Swift 和 Objective-C的区别
2020-03-04 本文已影响0人
CrystalZhu
- swift是静态语言 oc是动态语言
- swift是面向协议编程 oc是面向对象编程
- 纯swift的函数派发方式是直接派发和函数表派发, 兼容OC时支持消息机制派发 oc则总是使用消息机制派发,但允许使用C语言直接派发(swift效率高于oc的原因之一)
- swift是强类型语言,编译器会在编译时对代码做类型检测 oc不是,oc中的id类型可以转化成任意类型,在运行时才会对代码进行类型检测,所以swift是类型安全的语言
- swift注重值类型, swift中的struct是值类型 oc注重指针和引用
- swift去掉了C语法兼容的包袱,代码精炼.主要代码没有那么多的语法糖包裹,运行速度变快了.尤其是在大循环里调用函数,调用开销很多都消耗在了函数包装上.(swift效率高于oc的原因之一)
- swift是貌似脚本的编译语言,底层仍然是cocoa/ cocoa touch类库, 上面弄出个简练的脚本层调用这些库, 由于LLVM编译器及其优秀, 所以编译成中间机器码时,反而比复杂的OC调用这些库更快些(swift效率高于oc的原因之一) 这是历史上第一个同时有类型推断 类脚本的 函数型 的编译语言 开发者就是写clang llvm的大牛
- swift支持函数式编程 oc本身不支持,需要引入ReactiveCocoa库才支持函数式编程
swift支持各种方便快捷的高阶函数,如: map, reduce, filter等