美文网首页工作生活
使用闭包来初始化属性值

使用闭包来初始化属性值

作者: Balopy | 来源:发表于2019-07-03 11:10 被阅读0次

    在Swfit中,如果你想确保属性只初始化一次,或创建一次对象,可以使用闭包来初始化属性的值,闲话少说,直接上代码,供大家参考。

    class BLTestClass {
        var testPp: String = {
            // 在这个闭包中给 testPp 创建一个默认值
            // someValue 必须和 String 类型相同
            let tmp = "fsdfsa"
            
            print("执行了")
            return tmp
        }()
        
        init() {
            self.testPp = "dfasdf"
            self.testPp = "9090"
            self.testPp = "dfa9999sdf"
            self.testPp = "000000"
        }
    }
    
    let some = BLTestClass.init()
    let temp1 = some.testPp
    let temp2 = some.testPp
    let temp3 = some.testPp
    
    print(temp3)//  打印的是最后一个值 000000
    

    注意:
    如果你使用闭包来初始化属性的值,请记住在闭包执行时,实例的其它部分都还没有初始化。
    这意味着你不能够在闭包里访问其它的属性,就算这个属性有默认值也不允许。
    同样,你也不能使用隐式的self属性,或者调用其它的实例方法。

    另外,闭包设置默认值,只会执行一次,对于UI 控件的创建比较方便。

    相关文章

      网友评论

        本文标题:使用闭包来初始化属性值

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