iOS开发进阶技巧

Swift的优化

2019-07-25  本文已影响1人  Silicn

swift 比oc更快,但是swift编译比oc时间长
因为swift使用Whole Module Optimizations优化机制

swift值类型存储在栈中,引用类型存储在堆中。

1、栈是线程独有的,因此不需要考虑线程安全问题。
2、堆中的数据是多线程共享的,所以为了防止线程不安全,需同步锁来解决这个问题题

Objective-C语言动态化(runtime)这种灵活性是以查表的方式找出函数地址,既然查表操作,当然要付出时间代价

对象基于协议
Existential Container
协议类型:一般的Existential Container数据结构为:

编译优化

Clang 编译器流程

image.png

swift 特有编译器流程

image.png

注释:AST: 抽象语法树

Swift可以通过关键字dynamic对方法进行标记,这样就会告诉编译器,此方法使用的是OC的运行时机制。
注意:我们常见的关键字@ObjC并不会改变Swift原有的方法分派机制,关键字@ObjC的作用只是告诉编译器,该段代码对于OC可见。

Class extension使用的是Static dispatch

上一篇下一篇

猜你喜欢

热点阅读