具有以下单例:

class Colors {
    static let sharedInstance = Colors()
    private init() {}
    let mainColor = UIColor.redColor()

}

我在其他 class 这样称呼它:
Colors.sharedInstance.mainColor

有没有办法这样称呼它:
Colors.mainColor

如果我内部有结构,该怎么办:
class Colors {
    static let sharedInstance = Colors()
    private init() {}

    let mainColor = UIColor.redColor()

    struct gradients {
        let blueToRed = UIColor.blueColor()
    }

}

我可以调用渐变的唯一方法是:
Color.gradients().blueColor

如果我添加一个静态属性来初始化该结构,则可以删除方括号,但是在键入自动完成功能时,会同时显示静态属性和该结构:
class Colors {
    static let sharedInstance = Colors()
    static let gradientsProperty = gradients()
    private init() {}

    let mainColor = UIColor.redColor()

    struct gradients {
        let blueToRed = UIColor.blueColor()
    }

}

ios - 如何创建单例并跳过sharedInstance静态属性语法部分-LMLPHP

我想输入Colors.gradients.blueToRed

最佳答案

我想出了这个答案。 Singletons的原因是使用和性能的简单性,因为不需要每次都实例化该类或结构。

同样,存储在此处的数据不会流经应用程序,不会在应用程序中进行修改,它只是可重用性的基本颜色,以后可能还会用于UI元素的间距常量。

如上所述,在这种情况下不需要类,因为我不会修改数据。

此答案允许我寻找的语法:

struct Style {
    private init() {}
    static let color = Color()
    static let gradient = Gradient()
}


struct Color {
    let mainColor = UIColor.redColor()
    let secundaryColor = UIColor.blueColor()
    let textColor = UIColor.darkGrayColor()
}

struct Gradient {
    let backgroundGradient = UIColor.brownColor()
    let overlayGradient = UIColor.yellowColor()
}

这是您的用法:
Style.color.mainColor
Style.gradient.backgroundGradient

关于ios - 如何创建单例并跳过sharedInstance静态属性语法部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37999108/

10-10 21:05