Wie um zu überprüfen, ob NSTimer wurde bereits für ungültig erklärt
Ich habe eine NSTimer
Objekt, das muss ich entkräften, wenn ein Benutzer tippt auf eine Schaltfläche, oder wenn Sie verlassen einen Blick.
Also ich habe:
[myNSTimer invalidate];
in meinem button-handler und innen viewWillDisappear
. Wenn der Benutzer tippt auf eine Taste und dann existiert eine Ansicht, die app wirft eine Ausnahme, weil myNSTimer
wurde bereits für ungültig erklärt.
Was muss ich tun, in der viewWillDisappear
- Methode prüfen, ob die myNSTimer
entwertet wurde oder nicht. Wie mache ich das?
Ich versucht habe:
if(myNSTimer != nil)
[myNSTimer invalidate];
aber das hat nicht funktioniert.
InformationsquelleAutor subjective-c | 2008-12-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sobald Sie erlöschen, die timer, rufen Sie einfach
release
auf, vorausgesetzt Sie haben beibehalten, der Verweis, Sie halten an) und dann null heraus Ihre Referenz. So, wenn Sie die Sicht verlassen, versucht zu entkräften, wird der timer ein zweites mal rufen diese Methode auf null statt, die tut nichts.Alternativ können Sie
-[NSTimer isValid]
um zu überprüfen, ob es gültig ist, bevor Sie ungültig zu machen, aber es gibt wirklich keinen Grund zu halten Sie auf Ihre Referenz nach ungültig, es die erste Zeit sowieso. Auch, wenn Sie Ihre eigentliche problem ist, dass Sie nicht beibehalten, Ihre Referenz und so die ersten-invalidate
tatsächlich verlässt Sie mit einem Referenz zeigt auf ein Objekt freigegeben, dann ruft-isValid
nicht trotzdem helfen.message sent to deallocated instance
problem. Danke.InformationsquelleAutor Lily Ballard
Dem, was ich normalerweise tun, ist null-member-variable halten Sie den timer, wenn es ausgelöst wird, oder wenn ich es ungültig ist. Dann können Sie nur:
und das richtige tun werden.
InformationsquelleAutor Ben Gottlieb
Habe ich das gleiche problem hatte, während ich versuchte, pause & starten Sie einen timer. Um es zu stoppen:
Und starten/starten:
Nun, es stürzt nicht ab, wenn ich es ungültig ist.
InformationsquelleAutor Yunus Nedim Mehel
Swift:
InformationsquelleAutor Crashalot