Fix memory leak of block based method

I ran into an issue that using `addObserver:keyPath:options:block:` causes memory leaks even after calling remove observer method.