1、指定构造器和便立构造器
在Swift中,同一个类的不同init方法是不能直接使用self.init()平行调用的。
必须用关键字convenience修饰的init方法后,才可以使用 self.init(…)
convenience修饰的init方法就叫便捷初始化器,没有convenience 关键字的init就是指定构造器。
指定构造器必须调用其直接父类的的指定构造器。
2、内存管理
Swift内存管理也是使用的ARC。
3、可选类型
Swift的可选类型是其一大亮点,用于处理变量的值不存在的情况,适用于所有的数据类型,作用相当于OC中的nil,不过不仅仅局限于在类中使用。声明可选类型的时候使用Optional 或者 ? 表示这个变量是可选类型。在使用可选类型的时候要判断nil,但是如果在确定其一定有值的时候,可以使用!直接解包。
4、可选类型的解包
使用 if 判断的时候,如果多参数的多话,判断会很多,而强制解包又会出先问题,所以使用if let 或者guard let 重新声明一个常量来代表需要解包的参数。
if let 和 guard let
if let 解包后的参数只能作用与if的括号内,而guard let解包后的参数,则能用在括号外,只需要在guard let括号内部进行nil的处理即可。
if var 和 guard var 则是声明了变量。
5、访问权限
Swift中的访问权限从大到小依次是open public internal(Default) fileprivate private
在Swift3.0之后private成了绝对私有,离开了类或者结构体的作用域外面都无法访问。
open则是弥补了public权限太过开放的问题,现在使用public在离开module之后无法被override或者继承,但是可以被访问,而internal只能在本module访问。
6、Swift的switch
switch后边可以跟各种数据类型了,而且不需要使用break跳出判断,如果需要击穿的话使用关键字fallthrough。
7、Swift中的数据类型会自动推断,只区分常量let和变量var。
8、Swift中的Any可以代表任何类型的值,无论是类、枚举还是结构体还是其他的Swift类型。
9、Swift中的可变参数,使用inout关键字代表该参数为传引用 而不是传值调用。OC中可以使用**代表传入了参数的地址达到同样的效果。
Swift tips
2021-08-22