静态成员不能在类型的实例上使用

时间:2016-03-09 18:35:52

标签: swift

我正在尝试为单例创建一个访问方法。我收到此错误(请参阅下面的代码)。我不明白为什么我会收到此错误以及此错误的含义。谁能解释一下?

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
  static private var thedelegate: AppDelegate?

  class var delegate : AppDelegate {
    return thedelegate!
  }

  func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    thedelegate = self // syntax error: Static member 'thedelegate' cannot be used on instance of type 'AppDelegate'

2 个答案:

答案 0 :(得分:27)

你需要在声明它的类名前加上static / class变量或函数,即使在同一个类中也是如此。

在这种情况下,您需要return AppDelegate.thedelegate!

并且正如Martin R.指出的那样,AppDelegate.thedelegate = self

答案 1 :(得分:23)

您正尝试从该类的实例访问类级变量。要使用它,您需要创建类级别函数:static func()。试试这个:

static func sharedDelegate() -> AppDelegate {
    return UIApplication.sharedApplication().delegate as! AppDelegate
}