采用原生技术开发一款iOS app,那么就会面临开发语言的选择,Objective-C VS Swift。
年龄的比较
Objective-c这门语言年龄偏大,它是上个世纪80年代初开发的,而Swift年龄偏小,由苹果公司于2014年发布,现在才5、6岁,不过它现在越来越受开发者的喜欢
在编程语言排行榜中的比较
![b245fd8616c0cbe5a397128b6fa0a0f1.png](https://img-blog.csdnimg.cn/img_convert/b245fd8616c0cbe5a397128b6fa0a0f1.png)
从上图我们可以看出Swift的排名比Objective-C靠前,由此可见Swift非常受开发者的喜欢
性能的比较
影响性能的主要原因有内存分配、方法调度等。Objective-C是一门动态语言,它采用的是动态调度,采用的方法是objc_msgSend,调用的时候会去class instance保存的hash table里去查找,由于OC的动态性,实例对象类型要推迟到运行时才能确定具体的类型,所以OC的动态调度是一个比较耗时的过程。Swift支持静态调度和动态调度,静态调度在编译时就已经选择好了,动态调度类似于OC,需要运行时去查找,Swift采用的是V-Table的方式,类似于OC的hash table,不过由于Swift是一门类型安全的语言,所以在编译的时候我们当前对象的类型,V-Table中有哪些方法。所以,Swift的动态调度性能比 OC的动态调度快。
代码安全
Swift是一门类型安全和运行安全的语言。类型安全是指程序员在书写代码的时候就必须明确具体类型,不能把一个Float类型的值赋值给Int类型的变量,任何类型不匹配都会报错,不像OC不会报错。这样可以帮助程序员尽早发现潜在的问题。我们用Xcode静态分析工具检查OC项目时,会发现一堆类型不匹配的警告。Swift会保证变量在使用前就是已经初始化。
文件维护
Swift创建一个类只需要一个文件,后缀名是.swift, OC创建一个类,需要两个文件(.h和.m文件)。OC开发的项目需要维护的文件更多。
学习成本
Swift是一门简单易懂的语言,易于阅读和编写,相比之下,OC是一种复杂的语言,编写OC代码需要使用@和中括号,维护难度比Swift大。
通过上述对比,我们可以认识到Swift是苹果开发的旗帜,虽然Swift简单易学,但是达到熟练的程度也是需要花费一定时间的。所以,在选择开发语言的时候,还是要结合自身团队的实际情况。
希望大家能够发表一下自己的看法,大家共同学习和进步!谢谢大家!
![2513680e347d6f243f20562fa7e37e97.png](https://img-blog.csdnimg.cn/img_convert/2513680e347d6f243f20562fa7e37e97.png)
![2398f274722b6c2b57fbf2f30401f834.png](https://img-blog.csdnimg.cn/img_convert/2398f274722b6c2b57fbf2f30401f834.png)
![722a7a22b4a64976a3048aec1208bfa0.png](https://img-blog.csdnimg.cn/img_convert/722a7a22b4a64976a3048aec1208bfa0.png)