当前位置:网站首页>OC和Swift语言的区别
OC和Swift语言的区别
2022-08-02 02:23:00 【~废弃回忆 �༄】
一.编程范式
Swift可以面向协议编程,函数式编程,面向对象编程.
OC已面向对象编程为主,当然你可以引入类似ReactiveCocoa的类库来进行函数式编程.
二.类型安全
Swift是一门类型安全的语言.鼓励程序员在代码中清楚明确值得类型.如果在代码中使用一个字符串String,那么你不能错误地传递一个整型int给它.因为Swift是类型安全的,他会在代码编译的时候做类型检查,并且把所有不匹配的类型作为一个错误标记出来.
而OC则不然,你声明一个NSString变量,仍然可以传一个NSNumber给它,尽管编译器会抱怨,但是你仍然可以作为NSNumber来使用它.
三.值类型
在Swift中,典型的有Struct,enum以及tuple都是值类型.而平时使用的int ,double,float,string,Array,Dictionary,Set其实都是使用结构体实现的,也是值类型.
OC中,NSNumber,NSString以及集合类对象都是指针类型.
四.枚举增强
Swift的枚举可以使用整型,浮点型,字符串,还能拥有属性和方法,甚至支持泛型,协议,扩展等等.
OC中的枚举鸡肋则很多.
五.泛型
Swift中支持泛型,也支持泛型的类型约束等特性.
苹果推出了Swift2.0版本,为了让开发者从OC更好的过渡到Swift上,苹果也为OC带来了Generics泛型支持,不过OC的泛型也仅停留在编译器警告阶段.
六.协议和扩展
Swift对协议的支持更加丰富,配合扩展(extension),泛型,关联类型等可以实现面向协议编程,从而大大提高代码的灵活性.同时,Swift中的protocol还可以用于值类型,如结构体和枚举.
OC的协议缺乏强约束,提供的optiional特性往往成为很多问题的来源,而如果放弃optional又会让实现代价过大.
七.函数赫尔闭包
Swift函数一等公民,可以直接定义函数类型变量,可以作为其他函数参数传递,可以作为函数返回值返回.
OC里面函数仍然是次等公民,需要selector封装或者使用block才能模拟Swift中类似的效果.
边栏推荐
- 欧拉公式的证明
- PHP live source code to achieve simple barrage effect related code
- 【ORB_SLAM2】void Frame::AssignFeaturesToGrid()
- 面对职场“毕业”,PM&PMO应该如何从容的应对?如何跳槽能够大幅度升职加薪?
- Handwriting a blogging platform ~ the first day
- 永磁同步电机36问(二)——机械量与电物理量如何转化?
- Entry name 'org/apache/commons/codec/language/bm/gen_approx_greeklatin.txt' collided
- Project Background Technology Express
- How to adjust the cross cursor too small, CAD dream drawing calculation skills
- Nanoprobes多组氨酸 (His-) 标签标记:重组蛋白检测方案
猜你喜欢

工程师如何对待开源

2022-08-01 mysql/stoonedb slow SQL-Q18 analysis
![[ORB_SLAM2] void Frame::ComputeImageBounds(const cv::Mat & imLeft)](/img/ed/ffced88c9d23c20ccf380494051381.jpg)
[ORB_SLAM2] void Frame::ComputeImageBounds(const cv::Mat & imLeft)

Talking about the "horizontal, vertical and vertical" development trend of domestic ERP

AOF rewrite

2022-08-01 mysql/stoonedb慢SQL-Q18分析

Pinduoduo leverages the consumer expo to promote the upgrading of domestic agricultural products brands and keep pace with international high-quality agricultural products

数值积分方法:欧拉积分、中点积分和龙格-库塔法积分

BioVendor Human Club Cellular Protein (CC16) Elisa Kit Research Fields

MySQL8 download, start, configure, verify
随机推荐
Nanoprobes丨1-巯基-(三甘醇)甲醚功能化金纳米颗粒
【LeetCode Daily Question】——704. Binary Search
swift项目,sqlcipher3 -> 4,无法打开旧版数据库有办法解决吗
AOF rewrite
JVM调优实战
2023年起,这些地区软考成绩低于45分也能拿证
yaml
【LeetCode每日一题】——103.二叉树的锯齿形层序遍历
永磁同步电机36问(三)——SVPWM代码实现
面对职场“毕业”,PM&PMO应该如何从容的应对?如何跳槽能够大幅度升职加薪?
From 2023 onwards, these regions will be able to obtain a certificate with a score lower than 45 in the soft examination.
LeetCode 213. Robbery II (2022.08.01)
优炫数据库导库导错了能恢复吗?
罗德里格斯公式(Rodrigues‘ Rotation Formula)推导
What to study after the PMP exam?The soft exam ahead is waiting for you~
Safety (2)
messy website
Rasa 3.x 学习系列- Rasa - Issues 4873 dispatcher.utter_message 学习笔记
20. 用两个栈实现队列
局部敏感哈希:如何在常数时间内搜索Embedding最近邻