【Swift】基础知识

基础部分

  1. 类型别名(type aliases)
Typealias 关键字
示例: typealias AudioSample = UInt16 ;  var maxAmplitudeFound = AudioSample.min
  1. 布尔(Boolean)类型
Swift 只有两个布尔常量,true 和 false
  1. 元组(tuples) 多个值组合成一个复合值
示例:let http404Error = (404, “Not Found”); var error: ( code:Int,  msg:String) = (code: 500, msg: "NO Auth")
用途: 一个函数 多个返回值
  1. 可选类型(optionals)
var code:Int ?
  1. 可选绑定(optional binding)
示例:var someOptional :Int? ; if let constantName = someOptional { statements }

运算符

  1. 空合运算符(Nil Coalescing Operator)
?? 
示例: a ?? B   ==>    a  !=  nil ?  a!  :  b
  1. 区间运算符(Range Operators)
...   和 ..<
示例:0 … 5    0 ..< 5
  1. Swift 3移出对 ++ ,- - 的支持

字符串和字符(Strings and Characters)

  1. 字符串可变性
var variableString = “Horse”;  variableString += “ and carriage”//字符串连接
如果不可变,声明为let
  1. 字符串是值类型
如果您创建了一个新的字符串,那么当其进行常量、变量赋值操作,或在函数/方法中传递时,会进行值拷贝。 任何情况下,都会对已有字符串值创建新副本,并对该新副本进行传递或赋值操作。
  1. 字符串插值
"\() "
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
  1. 计算字符数量
"word".characters.count

集合类型 (Collection Types)

Swift中var出的集合类型都是可变的
  1. 数组中元素替换
shoppingList[4...6] = ["Bananas", "Apples"]
  1. 数组的遍历
for (index, value) in shoppingList. enumerated() { print("Item \(String(index + 1)): \(value)") }
  1. 字典遍历
for (airportCode, airportName) in airports { print("\(airportCode): \(airportName)") }
  1. 移除键值对
airports["APL"] = nil
if let removedValue = airports. removeValue(forKey: "DUB") { print("The removed airport's name is \(removedValue).") } else { print("The airports dictionary does not contain a value for DUB.") }

控制流

  1. Switch
不存在隐式的贯穿
每一个 case 分支都必须包含至少一条语句。
复合匹配,并且用逗号分开
区间匹配
元组匹配
值绑定(Value Bindings)
Where,case 分支的模式可以使用where语句来判断额外的条件。
  1. 带标签的语句
label name: while condition { statements }

函数

  1. 多重返回值函数
  2. 可选返回值
  3. 默认参数值
func someFunction(parameterWithoutDefault: Int, parameterWithDefault: Int = 12) {}
  1. 可变参数
func arithmeticMean(_ numbers: Double...) -> Double {}
  1. 函数类型
每个函数都有种特定的函数类型,函数的类型由函数的参数类型和返回类型组成

闭包

  1. 闭包的三种形式
全局函数
嵌套函数
闭包表达式
  1. 推荐闭包语法优化
利用上下文推断参数和返回值类型
隐式返回单表达式闭包,即单表达式闭包可以省略 return 关键字
参数名称缩写
尾随闭包语法
  1. 逃逸闭包(@escaping)和非逃逸闭包

枚举

  1. 关联值
enum Barcode { case upc(Int, Int, Int, Int) case qrCode(String) }
  1. 原始值
原始值的隐式赋值
使用原始值初始化枚举实例

构造过程

  1. 构造过程中常量属性的修改
  2. 通过闭包或函数设置属性的默认值

自动引用计数

  1. 弱引用
  2. 无主引用
  3. 闭包引起的循环强引用
解决闭包引起的循环强引用
定义捕获列表
使用弱引用和无主引用

访问控制

  1. open,public,internal,fileprivate,private
公开访问或者其他更严访问级别的类,只能在它们定义的模块内部被继承。
公开访问或者其他更严访问级别的类成员,只能在它们定义的模块内部的子类中重写。
开放访问的类,可以在它们定义的模块中被继承,也可以在引用它们的模块中被继承。
开放访问的类成员,可以在它们定义的模块中子类中重写,也可以在引用它们的模块中的子类重写。
把一个类标记为开放,显式地表明,你认为其他模块中的类使用此类作为父类,然后你已经设计好了类的代码了。
  1. open和public的区别在于,public限定的class, property只能在模块内被继承和重载(但是可以在模块外调用),而open所修饰的class/property则可以在模块外被重载。
  2. 默认访问级别 internal
  3. 上下层关系

高级运算符

  1. 优先级和结合性
  2. 运算符函数(运算符重载)
类和结构体可以为现有的运算符提供自定义的实现,这通常被称为运算符重载。
自定义运算符(operator)

你可能感兴趣的:(【Swift】基础知识)