在swift类的静态函数中访问非静态常量

问题描述 投票:1回答:2

我是新手。我想在静态函数中不使用swift类的静态成员,以下是我的代码。我无法在静态函数中访问类的任何静态成员。快速功能中是否可以访问非静态成员?

public class Test{
private let testString:String

init(test:String){
     testString = test
}

static func Get(url:String){
 //Here testString is not accessable..
}
}
ios xcode6 swift2
2个回答
5
投票

不,没有方法可以访问静态函数中的非静态变量。您可以创建类的静态实例(创建单例的方式)并访问其testString变量。


0
投票

有两种方法可以达到这种效果。如@Alexander所述,您可以创建类的静态实例(如单例)并使用它。可以做的另一种方法是像我最近做的一样简单的技巧,您可以拥有变量的静态版本。我所做的是使用信号来监听实例变量将经历的更改。如果尚未覆盖变量的getter(与KVO兼容),或者每次更改实例变量时都只是设置静态变量,则可以使用KVO进行相同操作,尽管必须基于闭包(OBJC中的Block)进行操作,否则这是一个整体大圈子比没有遇到。每当实例变量的值更改时,您只需将相同的更改应用于静态变量,而在静态函数中需要时,您只需使用静态变量。

© www.soinside.com 2019 - 2024. All rights reserved.