美文网首页
Swift笔记

Swift笔记

作者: 大饼炒鸡蛋 | 来源:发表于2016-04-22 17:48 被阅读5次

    let

    let常量一旦定义不能改变场景

    let image = UIImage(constentsOfFile:”MyImage.png”)

    let color = UIColor(red: 0.5, green: 0.0, blue: 0.5, alpha: 1.0)

    打印字符串

    print("\(nameInferred) on sale for \(priceInferred)!")打印语法\(your expression)

    可选类型optional

    默认为nil只有可选类型才能赋值为nilnil在swift中是一个确定的值,任何类型的可选类型都可以被设置为nil,不只是对象类型,确定有值在变量后加!来强制解析获取值(一定要确定有一个非nil值,要不会报错)

    可选绑定optional binding

    判断可选类型是否包含之,如包含赋值给一个临时常量或者变量,可以用在if和while语句中,比如

    if let contantName = someOptional {

               statements

    }

    if let actualNumber = Int(possibleNumber) {

    print("\'\(possibleNumber)\' has an integer value of \(actualNumber)")

    }

    隐式解析可选类型

    关键词:当可选类型第一次被赋值之后确定一直有值,可声明为隐式可选类型,要不每次都要判断和解析可选值是非常低效的,它其实就是一个普通的可选类型,但可以被当做非可选类型来使用,并不需要每次都使用解析来获取值

    let possibleString: String? = "An optional string."

    let forcedString: String = possibleString! //需要惊叹号来获取值

    let assumedString: String! = "An implicitly unwrapped optional string."

    let implicitString: String = assumedString//不需要感叹号

    错误处理

    func makeASandwich() throws {

    // ...

    }

    do {

    try makeASandwich()

    eatASandwich()

    } catch Error.OutOfCleanDishes {

    washDishes()

    } catch Error.MissingIngredients(let ingredients) {

    buyGroceries(ingredients)

    }

    空合运算符a??b

    对可选类型a进行空判断,如果a包含值就解析否则返回一个默认值b,是对以下代码的简短表达式

    a != nil ? a! : b

    区间运算符

    闭区间运算符(a...b)

    for index in 1...5 {

       print("\(index) * 5 = \(index * 5)")

    }

    半开区间运算符

    半开区间(a..<b)

    闭包表达式

    { (parameters) -> returnType in

    statements

    }

    闭包的函数体部分由关键字in引入。该关键字表示闭包的参数和返回值类型定义已经完成,闭包函数体即将开始。

    reversed = names.sort({ (s1: String, s2: String) -> Bool in

    return s1 > s2

    })

    尾随闭包:如果您需要将一个很长的闭包表达式作为最后一个参数传递给函数,可以使用尾随闭包来增强函数的可读性。尾随闭包是一个书写在函数括号之后的闭包表达式,函数支持将其作为最后一个参数调用:

    func someFunctionThatTakesAClosure(closure: () -> Void) {

    // 函数体部分

    }

    // 以下是不使用尾随闭包进行函数调用

    someFunctionThatTakesAClosure({

    // 闭包主体部分

    })

    // 以下是使用尾随闭包进行函数调用

    someFunctionThatTakesAClosure() {

    // 闭包主体部分

    }

    reversed = names.sort() { $0 > $1 }

    如果函数只需要闭包表达式一个参数,当您使用尾随闭包时,您甚至可以把()省略掉:

    reversed = names.sort { $0 > $1 }

    结构体和枚举是值类型

    值类型被赋予给一个变量、常量或者被传递给一个函数的时候,其值会被拷贝。

    类是引用类型

    与值类型不同,引用类型在被赋予到一个变量、常量或者被传递到一个函数时,其值不会被拷贝。因此,引用的

    是已存在的实例本身而不是其拷贝。

    等价于(===)  和等于(==)

    等价于”表示两个类类型(class type)的常量或者变量引用同一个类实例。

     “等于”表示两个实例的值“相等”或“相同”

    常量结构体的存储属性

    如果创建了一个结构体的实例并将其赋值给一个常量,则无法修改该实例的任何属性,即使定义了变量存储属性

    计算属性

    计算属性不直接存储值,而是提供一个 getter 和一个可选的 setter,来间接获取和设置其他属性或变量的值。

    struct Rect {

    var origin = Point()

    var size = Size()

    var center: Point {

    get {

    let centerX = origin.x + (size.width / 2)

    let centerY = origin.y + (size.height / 2)

    return Point(x: centerX, y: centerY)

    }

    set(newCenter) {

    origin.x = newCenter.x - (size.width / 2)

    origin.y = newCenter.y - (size.height / 2)

    }

    }

    }

    相关文章

      网友评论

          本文标题:Swift笔记

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