美文网首页
Swift:随手记

Swift:随手记

作者: 春暖花已开 | 来源:发表于2019-01-11 16:08 被阅读26次

    简单里的小知识点。


    实现pch功能
    @_exported用于在自己模块中导出其他模块。
    
    比如,自己定义了一个 A 模块。
    在 A 模块中定义:
    
    @_exported import UIKit
    
    当我们引入 A 模块(import A)时,可以使用 UIKit 中的符号。
    
    Enum的mutating
    enum MyEnum {
        case high, low, off
        
        mutating func change() {
            switch self {
            case .high:
                self = .low
            case .low:
                self = .off
            case .off:
                self = .high
            }
        }
    }
    
    var status = MyEnum.high  // high
    status.change()  // low
    status.change()  // off
    status.change()  // high
    

    类、结构体和枚举要使用大驼峰命名方法,方法和属性是用小驼峰命名方法。

    所有结构体都有一个自动生成的成员逐一构造器,用于初始化新结构体实例中成员的属性。与结构体不同,类实例没有默认的成员逐一构造器。

    结构体和枚举是值类型。实际上,在 Swift 中,所有的基本类型:整数(Integer)、浮 点数(floating-point)、布尔值(Boolean)、字符串(string)、数组(array)和字典(dictionary),都是 值类型,并且在底层都是以结构体的形式所实现。

    属性将值跟特定的类、结构或枚举关联。存储属性存储常量或变量作为实例的一部分,而计算属性计算(不是存储)一个值。计算属性可以用于类、结构体和枚举,存储属性只能用于类和结构体。存储属性和计算属性通常与特定类型的实例关联。但是,属性也可以直接作用于类型本身,这种属性称为类型属性。另外,还可以定义属性观察器来监控属性值的变化,以此来触发一个自定义的操作。属性观察器可以添加到自己定义的存储属性上,也可以添加到从父类继承的属性上。

    必须将延迟存储属性声明成变量(使用var关键字),因为属性的初始值可能在实例构造完成之后才会得到。而常量属性在构造过程完成之前必须要有初始值,因此无法声明成延迟属性。

    如果一个被标记为lazy的属性在没有初始化时就同时被多个线程访问,则无法保证该属性只会被初始化一次。

    相关文章

      网友评论

          本文标题:Swift:随手记

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