swift语法中和其它语言(OC,Java,JS)相同的地方就不多赘述,只记录一下需要注意的地方
1.基本语法部分
- 1.1 常量变量,类型自动推导,开发中尽量使用常量
swift没有隐式转换: swift对数据类型要求异常严格,任何情况都不会作隐式转换,如果要对数据类型进行转换,必须显式转换(即强转)
- 1.2 swift的nil和OC中的nil不一样:
- 在OC中,nil是一个指向不存在对象的指针.在OC中,基本数据类型和结构体是不能被设置为nil的.
- 在Swift中,nil不是指针,它是一个不确定的值.用来表示值缺失.任意类型的可选状态的值缺失都可以赋值nil,并不只是对象类型可以赋值。
- 1.3 可选值 optional
- 定义 变量或者常量 时,在其数据类型后加一个 ? 号,表示该变量或者常量是可选的(optional),变量可选项的默认值是 nil ,常量可选项没有默认值,主要用于在构造函数中给常量设置初始值
- 在 常量/变量 后加上 ! 号,表示强制解包(unwrap).如果常量或者变量是optional,则不能参与运算,只有将这个常量或变量强制解包后,才能参与运算,注意:必须确保常量或变量强制解包后的值不是 nil ,否则会在运行时报错 "fatal error: unexpectedly found nil while unwrapping an Optional value"
- 使用 ?? 运算符可以判断 变量/常量 的值是否是nil ,如果为nil,则用 ?? 后面的值代替原值
-
1.4 条件控制
-
1.5 循环
-
1.6 字符串
-
1.7集合
2. 函数部分
- 2.1 函数
函数定义格式
func 函数名 (形参列表) -> 返回值类型 {
// 代码实现
}
- 2.2 闭包
闭包定义格式
闭包 = { (形参) -> 返回值类型 in
// 代码实现
}
- 2.3 尾随闭包(Trailing Closures)
函数内联闭包的形式
函数名 ( 参数1, 参数2, 参数3 ,{ (闭包形参) -> 返回值类型 in
// 闭包的代码实现
} )
尾随闭包是一个书写在函数括号之后的闭包表达式,函数支持将其作为最后一个参数调用, 尾随闭包是 函数内联闭包的形式的简写
函数名 (函数形参) { (闭包形参) -> 返回值类型 in
// 代码实现
}
如果函数仅有一个参数 且 这个参数是闭包,则函数的() 可以省略
函数名 { (闭包形参) -> 返回值类型 in
// 代码实现
}
如果闭包没有参数 ,由于 闭包返回值支持 类型推导,则闭包的"(闭包形参) -> 返回值类型 in" 可以被省略,上面尾随闭包 可以简化为这样
函数名 {
// 闭包代码实现
}
- 2.4 <b>闭包内存循环引用
swift 解决循环引用的方式- 使用weak修饰变量, 打破强引用, 因为使用weak修饰的变量有一次变成nil的机会
- 使用[weak self] 修饰闭包原理跟OC中__weak类似, 这样在闭包中使用self, 就是弱引用
- 使用[unowned self ] 修饰闭包, 跟__unsafe_unretained类似, 不安全
3.面相对象
- 3.1 构造函数
- 3.2 重载构造函数
- 3.3 kvc构造函数
- 3.4 遍历构造函数
- 3.5 懒加载
- 3.6 只读属性







网友评论