美文网首页
Swift学习笔记(一)关键字

Swift学习笔记(一)关键字

作者: 不吃番茄炒蛋 | 来源:发表于2018-01-22 17:30 被阅读13次

在这里总结一些关于Swift的一些关键字的使用和应用场景。

Final

关键字可用于class、func、var前面进行修饰,标识不允许对该内容进行继承和重写操作。

Lazy

延时加载或者是延时初始化常用的关键字,也就是OC中常用的懒加载。

OC中的懒加载

// CustomObject
@property(strong, noatomac) CustomObject *object;

-  (CustomObject *)object {
    if(!_object) {
        _object = [[CustomObject alloc]init];
    }
    return_object;
}

Swift - Lazy

class ClassA {
    lazy var str:String = {
        let str = "str"
        return str
    }()
}

Static

Swift中标识“类型范围作用域”,用于修饰存储属性,static修饰的存储属性称为静态变量(常量),不可被重写,可以在类,结构体,或者枚举中使用。

在非class的类型上下文中,我们统一使用static来描述类型作用域。包括enum和struct中表述类型方法和类型属性时。在这两个值类型中,我们可以在类型范围内声明并使用存储属性,计算属性和方法。static适用的场景有这些:

struct Point {
    let x:Float
    let y:Float
    // 存储属性
    static let zero = Point(x:0, y:0)
    static var ones:[Point] {
        return[Point(x:1, y:1),
               Point(x:-1, y:1),
               Point(x:1, y:-1),
               Point(x:-1, y:-1)]
    }
    // 类型方法
    static func add(p1:Point, p2:Point) -> Point {
        return Point(x:p1.x + p2.x, y: p1.y + p2.y)
    }
}

Class

Class 关键字相比起来就明白许多,是专门用在class类型的上下文中,可以用来修饰类方法以及类的计算属性。但是有一个例外,class中现在是不能出现class的存储属性的,我们如果写类似这样的代码的话:

class MyClass {
    class var bar:Bar?
}

编译时会得到一个错误:

class variables not yet supported

我们可以在class中使用static来声明一个类作用域的变量。

class MyClass {
    static var bar:Bar?
}

以上的写法是合法的。

未完待续。。。

相关文章

网友评论

      本文标题:Swift学习笔记(一)关键字

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