由于Swift没有静态变量而且我正在尝试访问连接,这应该是静态的......将此变量放在App Delegate中是否合理?
我在GitHub上找到了这个代码段:
func xmppStream () -> XMPPStream {
return appDelegate().xmppStream!
}
因此,当代码中调用xmppStream()
时,是否会返回原始实例,或者实际执行的是什么?
答案 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的最佳方法。并不是说我完全容忍这一点。