Why to add `retain` in `init` method?  It will increase the reference count . it may cause `memory leak` issues.