Ich gehe zurück über irgendeinen schlauen Code, um es aufzuräumen und ich sehe, dass ich NSTimers, die von scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:
zurückgegeben wurden, beibehalte und sie in einem Feld ablege - dann lasse ich das Feld frei, wenn es feuert. In einigen Fällen verwende ich den Timer, um später eine Ungültigkeitsnachricht zu senden - aber in vielen Fällen nicht.Gibt es einen Grund, einen geplanten NSTimer beizubehalten, wenn Sie ihn nicht ungültig machen müssen?
Im neueren Code plane ich normalerweise nur den Timer und vergiss es. Ich verstehe, dass die Konstruktormethode Autoreleasing ist und der Zeitgeber von der Ausführungsschleife beibehalten wird, während es aktiv ist - damit sehe ich kein Problem.
Also, mein Verständnis abzurunden gerade aus - gibt es einen anderen Grund, warum ich meine Timer auf abhalten sollte, oder ist das, was ich jetzt das akzeptierte Idiom tue?
Dies ist alles im Zusammenhang mit iPhone-Code, aber ich glaube nicht, dass dies iPhone spezifisch ist.
Ja, das ist nicht wirklich eine Frage des Speichermanagements - obwohl ich das in meinen Text aufgenommen habe, für den Fall, dass ich etwas falsch verstanden hätte. Das heißt, wenn ich einen Hinweis darauf hätte, würde ich es trotzdem behalten - der Runloop sollte es freigeben, wenn es feuert. – philsquared