Swift 1.2: 'self' used before super.init call -


i have code:

class someviewcontroller : uiviewcontroller {   let deferred : ()->()   required init(coder adecoder : nscoder) {     deferred = {         self.dosomething()     }      super.init(coder: adecoder)  }   func dosomething() {     // things....  }  } 

in swift 1.2 fails compile error:

'self' used before super.init call

in pre-1.2 days, can address in number of ways such implicitly unwrapped conditionals. approach won't work longer.

i've seen other answers reference 2-stage initialization or lazy decorator, both sacrifice immutability of property. surely must solvable in swift 1.2, i'm out of ideas.

here's interim workaround:

private(set) var deferred : ()->() = { }  required init(coder adecoder : nscoder) {     super.init(coder: adecoder)     self.deferred = {         self.dosomething()     }  } 

my thinking is, okay, did "sacrifice immutability of property", public perspective property remains immutable because setter private.


Popular posts from this blog