OC和Swift语言的区别
一.编程范式
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中类似的效果.
OC和Swift语言的区别相关推荐
- OC与Swift混编 注意事项
前言 随着Swift发展, 很多新的项目开始使用Swift作为首选语言. Swift语言以其简洁.快速.安全的特点获得了一大波粉丝,我也是其中之一. 项目背景:公司一些旧项目大都使用OC编写, 运营中 ...
- oc语言和c语言,OC和C语言的混编注意点和好处
苹果的Objective-C编译器批准用户在统一个源文件里自由地混杂利用C++和Objective-C,混编后的语言叫Objective-C++.有了它,你就能够在Objective-C利用过程中利用 ...
- 初探swift语言的学习笔记九(OC与Swift混编)
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/34440159 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...
- OC 与 Swift 区别
OC 与 Swift 区别 一.block = 闭包 OC--block typedef void(^successBlock)(NSURL* url,id data); swift--闭包 type ...
- Swift 语言概览
Swift 语言概览 参考资料 swift学习资料总结 swift学习资源整理 swift开源项目: 使用swift实现常见加密算法 Firefox客户端使用的HTTP网络框架 使用swift实现的j ...
- Swift语言中的控制语句和函数
前面说了swift的语法不专门来讲,因为专门学语法会感觉比较无聊,所以就穿插来讲,在讲界面和效果一段时间,又讲一下语法,这样或许会好点. 这里就来讲Swift中的控制语句和函数. 控制语句 控制语句是 ...
- Swift语言官方文档翻译(3)-The Basics
The Basics Swift是为IOS和OS应用开发所创建的新语言.虽然定义为新语言,但Swift与这两个语言有很多相似的地方. Swift语言将C和OC语言中的基本原理封装成了自己的版本,包括将 ...
- iOS开发系列--Swift语言
概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...
- IOS开发之OC-Switf 混编 -(OC 引 Swift 文件)
上篇文章我们介绍了Swift 怎么引 OC 文件接来我们开始OC 引 Swift 文件. (一)OC 引 Swift 文件 1.创建 Demo ( 这个 Demo 名称一定要记住) 2.创建 Sw ...
最新文章
- Linux那些事儿之我是Sysfs(6)文件系统
- Windows下Nginx+Tomcat整合的安装与配置
- EL函数以及自定义标签的应用
- Consul集群搭建
- Linux操作系统下IPTables配置方法详解(转载)
- shell for 循环_linux之shell编程(三)
- Win7如何设置标准账号无法访问我的D盘
- 简练软考知识点整理-管理沟通
- REDIS中加锁和解锁问题
- 深光标准技术:谷歌GMS认证是什么?谷歌AER认证是什么?GMS认证的费用跟周期是多少??
- ubuntu下深度启动盘制作工具
- 你的香腮边轻轻滑落的, 是你的泪,还是我的泪。
- pic57 c语言编程,PIC16C57C初始化头文件
- 微信小游戏开发实战教程8-消除处理
- 二项分布期望和方差的推导及推广
- 关于ImportError: DLL load failed: 找不到指定的模块
- 心醉花海,芳菲春色入梦来
- 我的世界1.13 mod制作——简单的方块(五)
- 多智能体强化学习-DGN
- git reset soft、mixed和hard的区别和用途详讲