Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift 3吸气剂法_Ios_Properties_Swift3_Getter - Fatal编程技术网

Ios Swift 3吸气剂法

Ios Swift 3吸气剂法,ios,properties,swift3,getter,Ios,Properties,Swift3,Getter,我想写getter,希望getter每次调用时都返回相同的对象。这是我的密码 var someObject:NSObject? { get { if _someObject == nil { _someObject = NSObject() } return _someObject; } } 编译器给出了错误 使用未解析标识符“\u someObject” 如何在Swift 3中编写正确的getter方法?

我想写getter,希望getter每次调用时都返回相同的对象。这是我的密码

var someObject:NSObject? {
    get {
        if _someObject == nil {
            _someObject = NSObject()
        }
        return _someObject;
    }
}
编译器给出了错误 使用未解析标识符“\u someObject”
如何在Swift 3中编写正确的getter方法?

不要逐字翻译Objective-C代码

Swift等价物是一个惰性计算属性

lazy var someObject : NSObject = {
    return NSObject()
}()
第一次访问属性时,对象创建一次

您总是会得到一个非可选对象。

不要逐字翻译Objective-C代码

Swift等价物是一个惰性计算属性

lazy var someObject : NSObject = {
    return NSObject()
}()
第一次访问属性时,对象创建一次

您总是会得到一个非可选对象。

在Swift中,名为someObject的属性没有名为_someObject的支持变量。当然,您可以声明自己的名为_someObject的私有变量。作为一个优势,不需要将someObject声明为可选对象,因为getter永远不应该返回nil

在Swift中,名为someObject的属性没有名为_someObject的支持变量。当然,您可以声明自己的名为_someObject的私有变量。作为一个优势,不需要将someObject声明为可选对象,因为getter永远不应该返回nil

不一样。这意味着您不能将变量设置为nil并让它自动重新计算-这是一种非常强大的设计模式。@gnasher729我没有编写它是相同的,它相当于…每次调用“不相同”时都返回相同的对象。这意味着您不能将变量设置为nil并让它自动重新计算-这是一种非常强大的设计模式。@gnasher729我没有编写它是相同的,它相当于…每次调用时都返回相同的对象