我正在尝试声明一个具有静态变量的类,我想将其设置为该类的对象,即
class MyViewController: UIViewController {
@IBOutlet weak var title: UILabel!
static var staticSelf:MyViewController
该声明产生以下错误:
"class var declaration requires an initializer expression or getter/setter specifier".
因此,我尝试了几次尝试添加初始化器,但是却遇到了更多或不同的编译错误。因此,相反,我尝试添加错误中所述的getter / setter说明符,但这在运行时会导致无限循环。我已经尝试了多个版本,这是最新版本:
class MyViewController: UIViewController {
@IBOutlet weak var title: UILabel!
static var staticSelf:MyViewController {
set (selfInstance) {
MyViewController.staticSelf = selfInstance
}
get {
return MyViewController.staticSelf
}
}
override func viewDidLoad() {
super.viewDidLoad()
MyViewController.staticSelf = self
}
}
在执行setter方法的最初尝试是staticSelf = selfInstance
,XCode将其标记为错误并自动更正为self.staticSelf = selfInstance
,但这会导致无限循环,因此我将其更改为MyViewController.staticSelf = selfInstance
,但这也创建了无限循环。
我已经尝试了上千种方法来进行此设置,并且可以使用Objective-C在3秒内完成设置,并且现在对Swift感到非常厌烦。
假设在Objective-C中您将使用可能为null的指针,那么在Swift中,您将执行类似的操作。
class MyViewController: UIViewController {
static var staticSelf:MyViewController?
override func viewDidLoad() {
super.viewDidLoad()
MyViewController.staticSelf = self
}
func somefunc() {
}
}
当您需要从其他地方访问它时:
if let controller = MyViewController.staticSelf {
controller.somefunc()
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句