Вы не можете избежать удержания объекта. Он сохраняется для того, чтобы уберечь вас от неприятных сбоев, когда в следующем цикле основного цикла среда выполнения вызовет ваш селектор для освобожденного объекта.
Если вы действительно настаиваете на немедленном освобождении вашего объекта, не дожидаясь отложенного селектора, я бы предложил вам создать отдельный прокси-класс. Скажем, ваш класс называется A
, создайте прокси-класс B
, который будет иметь слабую ссылку на ваш класс A
(то есть __weak A* a
) и restartConnection
селектор, который проверит, слабый ли ссылка действительна. Если это так, это вызовет restartConnection
на вашем A
объекте. Затем, конечно, сделайте отложенный селектор на B
s restartConnection
Но, прежде всего, я бы действительно предложил вам пересмотреть, действительно ли вы не можете жить с удержанием.