swift语法注意点(swift3.0)

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,则用 ?? 后面的值代替原值
swift语法注意点(swift3.0)_第1张图片
  • 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 闭包内存循环引用
    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 只读属性

你可能感兴趣的:(swift语法注意点(swift3.0))