Dealloc
будет вызываться только в том случае, если у вашего объекта нет остатков (т. Е. После вашего последнего выпуска).
Когда вы создаете свой таймер, вы говорите ему, что его цель - self
.Чтобы избежать осложнений позже (т. Е. После того, как self
будет освобожден из памяти, а ваш таймер все еще активен, он поэтому сохраняет self
. Таймеры сохранят свои цели .
Это означает, что у вас есть еще одно сохранение, что означает, что dealloc не будет вызываться (он все еще сохраняется таймером).
По сути, не используйте dealloc
для аннулирования вашего таймера.- использовать что-то еще (возможно, метод, который срабатывает, когда ваш таймер больше не требуется).