/ / Existuje nejaký dôvod na ponechanie naplánovaného programu NSTimer, ak ho nepotrebujete zrušiť? - kakao, macos, nstimer

Existuje nejaký dôvod na to, aby si udržal plánovaný NSTimer, ak ho nemusíte zneplatňovať? - kakao, makos, nstimer

Vraciam sa po nejakom krutom kóde, aby som to upratal a vidím, že som si udržal NSTimers vrátený z scheduledTimerWithTimeInterval:target:selector:userInfo:repeats: a ich uloženie na poli - potom uvoľnenie a vynulovanie poľa pri požiari. V niektorých prípadoch používam časovač, aby som mu neskôr poslal neplatnú správu - ale v mnohých prípadoch nie.

V novšom kóde zvyčajne len naplánujemčasovač a zabudnúť na to. Chápem, že konštruktor metóda je autoreleasing a časovač je zachovaný beh slučky, zatiaľ čo je aktívny - tak som don "t vidieť žiadne problémy s týmto.

Takže len preto, aby som dokončil svoje chápanie - je nejaký iný dôvod, prečo by som sa mal držať svojich časovačov, alebo je to to, čo teraz robím prijatý idiom?

To je všetko v kontexte iPhone kód, ale ja don "t veriť, že to je iPhone špecifické.

odpovede:

3 pre odpoveď č. 1

Len som nechal run slučku zvládnuť retenciu, sám - to je beh slučka, ktorá vlastní časovač a nie ja. Ak vidíte, čo tým myslím.


1 pre odpoveď č. 2

Odpovedám na svoju vlastnú otázku.

Väčšinou som sa pýtal na otázku, pretože som bol "dprezeranie dokumentácie k triedam a tento problém nebol celkom objasnený. Odvtedy som si prečítal témy Timer Programming Topics: Používanie článku Timers v ADC a pokrýva to celkom dobre - najmä časť o správe pamäte na konci.

Podľa toho, čo robím teraz (len plánovanie, pokiaľ nepotrebujem hovoriť o neplatnosti, alebo isValid atď.) Je správna cesta.