将变量放在AppDelegate中是Swift中静态变量的变通方法吗?

时间:2014-11-15 23:31:32

标签: ios swift static

由于Swift没有静态变量而且我正在尝试访问连接,这应该是静态的......将此变量放在App Delegate中是否合理?

我在GitHub上找到了这个代码段:

func xmppStream () -> XMPPStream {
    return appDelegate().xmppStream!
}

因此,当代码中调用xmppStream()时,是否会返回原始实例,或者实际执行的是什么?

1 个答案:

答案 0 :(得分:3)

这并不完全准确。 Swift CLASSES没有静态变量,但结构和枚举确实存在!

struct Static {
    static var stream: XMPPStream?
}

如果您愿意,可以稍后在代码中对其进行初始化。

Static.stream = XMPPStream()

如果您需要一个类的静态变量,另一种方法是将结构嵌套在:

class RegularClass {

    struct Static {
        static var stream: XMPPStream?
    }

    //Other code
}

在其他地方你可以像......一样访问它。

RegularClass.Static.stream ...

这可能是目前Swift中Singletons的最佳方法。并不是说我完全容忍这一点。