美文网首页
【Swift】基础知识

【Swift】基础知识

作者: Richard_Wei | 来源:发表于2017-06-23 16:08 被阅读0次

    基础部分

    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】基础知识

          本文链接:https://www.haomeiwen.com/subject/dgtccxtx.html