如何使用swift

时间:2015-05-10 14:33:28

标签: swift

我试图在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?作为可选项,但它实际上不是可选的,并且不想总是在客户端附加感叹号!

建议的方法是什么?我看到了这个堆栈溢出问题:

Error in Swift class: Property not initialized at super.init call - How to initialize properties which need use of self in their initializer parameter

这似乎解决了相同的主题,它建议反转初始化属性的顺序,就像我的第二个例子,但我仍然得到一个错误。

0 个答案:

没有答案