我试图在swift中创建一个聊天服务单例,并在初始化属性时遇到一些错误。如果我这样做,我会收到错误self.client not initialized at super.init call
class ChatService : NSObject, PTPusherDelegate {
var client:PTPusher
static let sharedInstance = ChatService()
override init() {
super.init()
self.client = PTPusher.pusherWithKey("test", delegate: self) as! PTPusher
client.connect()
}
}
但是,如果我在super.init调用之前移动它,我会得到self used before super.init call
override init() {
self.client = PTPusher.pusherWithKey("test", delegate: self) as! PTPusher
super.init()
client.connect()
}
我可以声明var client:PTPusher?作为可选项,但它实际上不是可选的,并且不想总是在客户端附加感叹号!
建议的方法是什么?我看到了这个堆栈溢出问题:
这似乎解决了相同的主题,它建议反转初始化属性的顺序,就像我的第二个例子,但我仍然得到一个错误。