Swift初始化存储的属性问题

时间:2016-08-31 09:37:10

标签: ios swift

我有一个班级

class Service: NSObject {
  let wirlessSerivce: WirlessSerivce

  override init()
  {
    super.init()
    wirlessSerivce = WirlessSerivce()
    wirlessSerivce.delegate.addDelegate(self)
  }
}

我遇到了这两个问题:

  1. Property 'self.wirlessSerivce' not initialized at super.init call

  2. Immutable value 'self.wirlessSerivce' may only be initialized once (change let to var)

  3. 我想要实现的目标是创建wirlessSerivce并通过委托订阅Service类到wirlessSerivce更新。我使用多播委托,如果Service

    中的某些数据发生了变化,我想通知我的wirlessSerivce

    我也可以这样做:

     class Service: NSObject {
          let wirlessSerivce =  WirlessSerivce() {
            didSet {
              wirlessSerivce.delegate.addDelegate(self)
            }
    }
    

    据我所知,让wirlessSerivce = WirlessSerivce()甚至在类获取其初始化方法之前就会创建一个实例。正确?

    似乎这段代码有效:

    class Service: NSObject {
      var wirlessSerivce: WirlessSerivce!
    
      override init()
      {
        super.init()
        wirlessSerivce = WirlessSerivce()
        wirlessSerivce.delegate.addDelegate(self)
      }
    }
    

    但是这里有一些问题:var是针对可变属性的,我实际上并不需要可变服务。 (!)表示该实例将在从任何地方使用之前进行初始化。但我在init func初始化它,我真的需要用(!)

    标记它吗?

0 个答案:

没有答案