重写构造方法,必须调用一次系统提供的构造方法以便初始化父控件
写便利构造函数的时候,需要先初始化自身的所有属性,基本数据类型需要直接复制,String等可以用?可选值达到懒加载效果,也可以在构造方法里赋值,####重点是,初始化之后,需要调用一次系统的任意一个构造函数,以初始化父控件
swift的初始化跟oc不同:
- swift是先创建自身,然后一层一层网上找父控件去初始化.
- oc是从最上层开始,依次初始化父控件直到自身,然后初始化自身之后依次返回去,相当于要走一来一回
所以就初始化而言,swift要比oc快一点
swift没有runtime机制,他可以调用runtime方法,但是底层跟oc不同,swift允许你调用这些oc方法,但是本身没有
swift的switch默认没有贯穿,不用像oc一样加break,如果想达到贯穿的效果,加关键字fallthrough
switch可以多条件并列,用","隔开即可
关键字:
- Break: 结束整个控制流的执行. 当在一个循环体中使用break时,会立刻中断该循环体的执行,然后跳转到表示循环体结束的大括号(})后的第一行代码。不会再有本次循环的代码被执行,也不会再有下次的循环产生.
- fallthrough: 贯穿.从上一个 case 分支落入到下一个 case 分支中
- continue: 多个条件语句嵌套,跳出本次循环,继续下次判定
检测API的可用性: “if或guard语句中使用可用性条件(availability condition)”
if #available(iOS 10, macOS 10.12, *) {
// 在 iOS 使用 iOS 10 的 API, 在 macOS 使用 macOS 10.12 的 API
} else {
// 使用先前版本的 iOS 和 macOS 的 API
}