You cannot avoid saving the object. It is saved in order to save you from ugly crashes when, in the next loop of the main loop, the runtime will call your selector on the released object.
If you really insist on immediate release of your object, without waiting for your pending selector, I would suggest you create a separate proxy class. Say your class is called A , create a proxy class B that will have a weak link to your selector A (i.e. __weak A* a ) and restartConnection , which will check for the weak link. If so, it will reference restartConnection on your object A Then make, of course, the delayed selector on B restartConnection
But first of all, I would really suggest you reconsider whether you really cannot live with conservation.
Krizz source share