写在前面
以前做iOS的项目一直使用OC开发,最近做项目时使用了Swift。但是被别人问及
- 为什么使用Swift做项目?
- Swift与OC相比有什么区别?或者有什么优势?
...
我先是一脸懵逼,因为自己确实没有细细比较过Swift与OC的区别,或者Swift语言到底有什么优势。静下心来想想,自己使用Swift开发项目的最初原因,无非是想证明自己已经掌握了一门新的开发语言,而且,这门语言已经很成熟。
真要说说Swift与OC的区别,那就先从语法开始总结吧!
Swift与OC语法上的区别
常量和变量
- Swift常量使用let声明;变量使用var声明
- Swift对常量和变量有类型推断的机制
- Swift对变量新增了可选类型,可选即表示这个变量要么有值,要么为nil
函数
- Swift一行代码不用写分号
- Swift的返回值可以使用元组返回多个值
- Swift的函数参数可以设置缺省值
- Swift的函数参数有内外标签
- Swift的函数可以嵌套函数
- Swift子类覆盖父类的方法必须使用关键字override
关键字、保留字、数据类型
- nil:OC中nil只能修饰NSObject及其子类对象,表示OC对象指针为空;Swift中nil可以修饰所有类型,包括基础数据类型,表示值缺失
- switch:1. Swift中switch语句的值可以是字符串等值 2.Swift中switch不用break,如果想实现几个值贯穿可以使用关键字fallthrough
- 数组:Swift的数据可以存储基础类型数据;NSArray只能使用NSNumber存储基础数据类型数据
- 布尔类型:Swift的Bool类型true才为真;OC里BOOL类型非0即为真
- 取余:Swift可以对浮点型数据取余(Swift3.0后使用函数对浮点型数据取余;%与OC中保持一致)
- Swift中对变量取别名使用typealias;OC中使用typedef
Swift新增关键字、运算符
- 范围运算符:
a...b表示[a, b],及a<= value <=b
a..<b表示[a, b),及a<= value <b - 元组
现在先总结这么多,后续更新。如果有什么遗漏的语法不同点,欢迎大家提出~
网友评论