swift - NSInternalInconsistencyException observer contentSize -
getting error
2017-07-28 20:17:34.636 app[78013:1799389] *** terminating app due uncaught exception 'nsinternalinconsistencyexception', reason: 'an instance 0x7fa97b0bf400 of class app.messagescelltextview deallocated while key value observers still registered it. current observation info: <nskeyvalueobservationinfo 0x618000434e80> ( <nskeyvalueobservance 0x618000243c60: observer: 0x7fa97b0bf400, key path: contentsize, options: <new: yes, old: no, prior: no> context: 0x0, property: 0x618000243c90> when leave chat controller , go back.
this code contentsize
var observeradded: bool = false override func awakefromnib() { super.awakefromnib() self.addobserver(self, forkeypath:"contentsize", options:.new, context:nil) observeradded = true } deinit { if (observeradded) { observeradded = false self.removeobserver(self, forkeypath: "contentsize") } } override func observevalue(forkeypath keypath: string?, of object: any?, change: [nskeyvaluechangekey : any]?, context: unsafemutablerawpointer?) { if let textview = object as? uitextview { var y: cgfloat = (textview.bounds.size.height - textview.contentsize.height * textview.zoomscale) / 2.0 y = (y < 0.0 ? 0.0 : y) textview.contentoffset = cgpoint(x: 0, y: -y) } } weird thing is, tried removing of these code still same error, what!!.
check flag if observer not added inside awakefromnib method add accordingly:-
override func awakefromnib() { super.awakefromnib() if !observeradded { self.addobserver(self, forkeypath:"contentsize", options:.new, context:nil) observeradded = true } }
Comments
Post a Comment