Есть ли какая-либо причина для сохранения запланированного NSTimer, если вам не нужно его аннулировать? - PullRequest
3 голосов
/ 02 марта 2009

Я возвращаюсь к некоторому грубому коду, чтобы привести его в порядок, и вижу, что я сохраняю NSTimers, возвращенные из scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:, и сохраняю их в поле - затем освобождаю и обнуляю поле при его запуске. В некоторых случаях я использую таймер для отправки ему сообщения о недействительности позже, но во многих случаях нет.

В более новом коде я обычно просто планирую таймер и забываю об этом. Я понимаю, что метод конструктора является автоматическим выпуском и таймер сохраняется циклом выполнения, пока он активен - поэтому я не вижу никаких проблем с этим.

Итак, просто чтобы завершить мое понимание - есть ли какая-то другая причина, по которой я должен держаться за свои таймеры, или то, что я делаю сейчас, - принятая идиома?

Это все в контексте кода iPhone, но я не верю, что это специфично для iPhone.

Ответы [ 2 ]

3 голосов
/ 02 марта 2009

Я просто позволил циклу выполнения управлять удержанием, сам - это цикл выполнения, который владеет таймером, а не я. Если вы понимаете, о чем я.

1 голос
/ 02 марта 2009

Я отвечаю на свой вопрос.

Я в основном задавал вопрос, потому что просматривал справочные документы по классам, и эта проблема не совсем прояснилась. С тех пор я прочитал статью Адаптеры таймеров: Использование таймеров в АЦП, и она довольно хорошо освещает ее - особенно раздел об управлении памятью в конце.

В соответствии с тем, что я сейчас делаю (просто планирую, если мне не нужно иметь возможность вызывать аннулировать, или isValid и т. Д.), Это правильный путь.

...