尚不支持类变量

 mobiledu2502912817 发布于 2023-01-11 20:52

我使用拆分视图控制器作为初始视图控制器开始我的项目,并从故事板自动启动它.

一般地,通过该用户界面的应用程序有一个且只有一个拆分视图控制器作为根,所以我创建一个静态变量在子类,并将其设置初始化已完成时.

所以我想用swift试试这个行为.

我在iBook上阅读了关于Type属性(带有static和class关键字)的Swift编程语言指南,并尝试了一段代码:

import UIKit

class SplitViewController: UISplitViewController {

    class func sharedInstance() -> SplitViewController {
        return SplitViewController.instance
    }

    class let instance: SplitViewController = nil

    init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
        self.initialization()
    }

    init(coder aDecoder: NSCoder!) {
        super.init(coder: aDecoder);
        self.initialization()
    }

    func initialization() {
        SplitViewController.instance = self;
    }
}

但是当Xcode说不支持类型属性的class关键字时,我想通了.

图像中的错误细节

你有解决方案吗?

5 个回答
  • 从Swift 1.2(Xcode 6.3b1及更高版本开始)开始,static支持类属性和方法.

    class SomeClass
    {
        static var someVariable: Int = 0
    }
    

    2023-01-11 20:55 回答
  • 我首选的方法是在类之外使用私有文件范围var,然后实现类/静态getter和setter:

    private var _classVar: Int = 0;
    
    class SomeClass
    {
        public class var classVar: Int
        {
            get { return _classVar }
            set { _classVar = newValue }
        }
    }
    

    2023-01-11 20:55 回答
  • 嵌入结构可以很好地解决方法:

    class SomeClass
    {
      // class var classVariable: Int = 0
      // "Class variables not yet supported." Weird.
    
      // Workaround:
      private struct SubStruct { static var staticVariable: Int = 0 }
    
      class var workaroundClassVariable: Int
      {
        get { return SubStruct.staticVariable }
        set { SubStruct.staticVariable = newValue }
      }
    }
    

    然后可以使用SomeClass.workaroundClassVariable计算类型属性,就好像它是存储的类型属性一样.

    2023-01-11 20:55 回答
  • 似乎可以在文件范围内声明具有静态存储持续时间的变量(如C中所示):

    var sharedInstance: SplitViewController? = nil
    
    class SplitViewController: UISplitViewController {
        ....
        func initialization() {
            sharedInstance = self
        }
    }
    

    2023-01-11 20:55 回答
  • Swift现在支持类中的静态变量.这与类变量不完全相同(因为它们不是由子类继承的),但它会让你非常接近:

    class X {
      static let y: Int = 4
      static var x: Int = 4
    }
    
    println(X.x)
    println(X.y)
    
    X.x = 5
    
    println(X.x)
    

    2023-01-11 20:55 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有