这两个属性之间有什么区别?

时间:2015-12-29 21:09:50

标签: swift swift2

这两者之间的区别是什么?

var sharedContextA: NSManagedObjectContext {
    return CoreDataStackManager.sharedInstantce().managedObjectContext
}


var sharedContextB = {
    return CoreDataStackManager.sharedInstantce().managedObjectContext
}()

澄清一下,我看到了:

var variable: Type {
    code
    return X
}

但我不知道这个名称或它与前者的不同之处:

var variable = {
    code
    return X
}()

1 个答案:

答案 0 :(得分:1)

sharedContextA是计算属性。每次调用属性的getter时,都会计算要返回的值。

sharedContextB使用闭包为属性指定默认值。在属性所属类型的初始化期间执行一次闭包,然后直接读取存储的值。