I try this but still getting crash --
It's related to KVO = Key-Value Observing. Check if you're calling the function
object.addObserver(self, forKeyPath:..., options:..., context:...)
somewhere; that's your KVO observer. This class would also override the function
observeValue(forKeyPath:of:change:context:)
As the error message says, if you get a crash here, that means the observer was "overreleased" or "smashed". I think that just means it was released while still observing the key path.