在学习了swift之后先来看看它的一些优缺点,在对比oc做一些比较。
swift是静态类型语言,oc是动态语言。
oc类型检查和错误检查都是在运行时完成的。这意味着在编译阶段,编译器是无法检查和判断出的。这就导致运行时错误,从而影响应用程序的稳定性和安全
Swift 在编译器阶段就可以检查类型错误和垒砌常见的变成错误,减少运行时错误。所以也就有了以下的一些优点。
优点:
1简洁的语法,性能更好。
swift比oc精简整个项目少了.h文件,以及头文件的引入,提升了效率
2.swift更加安全
类型安全的语言 可选类型 强制解包等
3.定义变量简单
定义变量不区分整型 浮点型等,变量使用var,常量使用let
4.更加强大的特性
swfit具有许多oc所不具备的特性。结构体 泛型和函数式编程,闭包 元祖和类型推断 扩展等
缺点:
swift项目编译时间相对较长
swift还是比较新的语言,可能不适合长期维护的大型项目
支持的第三库比较少一些。
对比oc,在一些具体的地方又有不同。
1.switch的判断
在oc的switch种,不能判断对象类型,只能判断基本类型中的整数,default位置可以随便放
在swift中的switch 可以判断对象类型,支持对选哪个类型 元祖 区间等等,可以不写break,如果写default,要放在最后。
3.fina关键字
swift中的fina修饰符可以防止类被继承,还可以防止子类重写父类的属性,方法以及下标
可选类型 switf引入了可选项类型,用于处理变量值不存在的情况 Optionals类似于OC中指向nil的指针,但是适用于所有数据类型,而非仅仅局限于类,Optionals相比于OC中的nil指针,更加安全和简明。
4.访问权限
Swift又新增了两种访问控制权限 fileprivate和 open。Swift中访问权限由大到小依次为:open > public > internal(默认)> fileprivate >private。
open:可以在任何地方访问,包括override和继承。
public:可以在任何地方访问,但其他module中不可以被override和继承,而在本module内可以被override和继承。
internal:修饰的属性或方法在整个模块内都可以访问,系统默认。
fileprivate:在当前文件内可以被访问。
private:在当前类中能被访问。
范围运算符
5.范围运算符:
a...b 表示 [a,b] 包括a和b 。 (如3...5 就是范围取3,4,5)
a..<b 表示 [a,b) 包括a,不包括b 。 (如3..<5 就是范围取3,4)
常见的如for循环:for i in 0...9{}。
6.独有的元组类型
元组把多个值组合成了一个复合值,元组内的值可以是任务类型,并不要求是相同类型。var value = (Int,String) = (x:15,y:"abc")
7.if let 、 guard let
缩减代码量,安全处理数据逻辑,作用是解包。
8.关于BOOL类型更加严格,swift不再是OC的非0就是真,而是true才是真,false才是假。