静态属性观察者

时间:2017-01-21 03:37:05

标签: ios swift properties static

像往常一样,这通常有效:

var someVar = 1{
    didSet{
        callSomeMethod()
    }
}

然而,当我使var静态时,我不能再调用该方法了。

static var someVar = 1{
    didSet{
        callSomeMethod() // -> gives error
    }
}

错误如下所示。是否有可能在静态变量上有属性观察者?如果是这样,还有其他选择吗?有人请帮忙。

enter image description here

1 个答案:

答案 0 :(得分:3)

初始设置

我认为你的意思是这个测试:

class Test {

    var someVar = 1{
        didSet{
            callSomeMethod()
        }
    }

    func callSomeMethod(){
        print("Test")
    }
}

var test = Test()

print(test.someVar)
test.someVar = 2
print(test.someVar)

我得到结果:

1
Test
2

静态变量无法调用实例函数

我添加一个静态,然后我也需要设置静态函数:

class Test {

    static var someVar = 1{
        didSet{
            callSomeMethod()
        }
    }

    //this need to be static too
    static func callSomeMethod(){
        print("Test")
    }

}

var test = Test()

print(Test.someVar)
Test.someVar = 2
print(Test.someVar)

我得到结果:

1
Test
2

创建实例以访问实例功能

初始化类以访问函数调用(不是推荐):

class Test {

    static var someVar = 1{
        didSet{
            // init the class to get a instance function
            Test().callSomeMethod()
        }
    }

    func callSomeMethod(){
        print("Test")
    }

}

var test = Test()

print(Test.someVar)
Test.someVar = 2
print(Test.someVar)

我得到结果:

1
Test
2

外部功能

当函数在外面时,它也可以正常工作

class Test {

    static var someVar = 1{
        didSet{
            callSomeMethod()
        }
    }

}

//this need to be outside
func callSomeMethod(){
    print("Test")
}

var test = Test()

print(Test.someVar)
Test.someVar = 2
print(Test.someVar)

我得到结果:

1
Test
2