Ios 静态特性观测器

Ios 静态特性观测器,ios,swift,properties,static,Ios,Swift,Properties,Static,与往常一样,这通常有效: var someVar = 1{ didSet{ callSomeMethod() } } 但是,当我将var设置为静态时,我就不能再调用该方法了 static var someVar = 1{ didSet{ callSomeMethod() // -> gives error } } 错误如下所示。在静态变量上不可能有属性观察器吗?如果有的话,还有其他选择吗?谁来帮忙 初始设置 我想你是说这个

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

var someVar = 1{
    didSet{
        callSomeMethod()
    }
}
但是,当我将var设置为静态时,我就不能再调用该方法了

static var someVar = 1{
    didSet{
        callSomeMethod() // -> gives error
    }
}
错误如下所示。在静态变量上不可能有属性观察器吗?如果有的话,还有其他选择吗?谁来帮忙


初始设置

我想你是说这个测试:

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
1
Test
2
1
Test
2
1
Test
2
静态变量无法调用实例函数

我添加了一个static,然后我还需要将函数设置为static:

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
1
Test
2
1
Test
2
1
Test
2
创建实例以访问实例功能

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

我得到的结果是:

1
Test
2
1
Test
2
1
Test
2
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
1
Test
2
1
Test
2
1
Test
2

可以添加定义someVar和callSomeMethod的位置吗?在同一个班?