Swift:如何声明一个静态成员变量,它是一个类

咕cake蛋糕

我正在尝试声明一个具有静态变量的类,我想将其设置为该类的对象,即

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感到非常厌烦。

ryantxr

假设在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在枚举类中声明一个静态变量

如何使用一个对象,它是另一个类的特定变量?

如何使用或调用在另一个类中声明的静态变量

用一个类声明一个变量

想要一个静态成员函数来调用同一类的成员变量

声明一个变量类

如何获得在另一个类的一个类中声明的变量?

如何在另一个类的静态成员函数中访问私有静态变量?

如何强制一个类声明一个最终变量?

如何从同一个类的静态函数访问一个类的私有成员?

如何声明绑定到另一个类的成员的类型的成员?

为类的方法声明一个附加成员

你如何调用一个类的属性,就好像它是一个变量(在 python 中)?

在 C++ 中使用宏声明一个类和成员变量

在JavaScript类中声明一个公共的“静态”函数

在声明之前分配一个静态变量

从另一个类访问一个类的成员变量

在 Swift 中声明一个类类型的变量并将其分配给不同的变量

如何访问一个公共静态最终成员从Scala的Java类?

如何声明一个不能更改Java中的类成员的方法?

如何在 C++ 中声明一个零初始化的类成员?

在C++中,如何声明一个只能在外部更改的类成员?

如何从另一个类的静态方法更改静态变量的值

如何制作一个 css 类,它是另一个的修改?

如何删除一个类属性,它是另一个类的列表

如何命名一个变量,它是一个参数的副本?

一个对象之后一个变量,它是如何工作的?

如果我只有一个静态变量的类-我应该将该类声明为静态的吗?

从另一个类访问静态变量