Warum würde ein `ScheduledTimer` ordnungsgemäß ausgelöst, wenn er außerhalb eines Blocks, aber nicht innerhalb eines Blocks eingerichtet wird?

Der folgende Codeausschnitt funktioniert einwandfrei, wenn er außerhalb eines Beendigungsblocks aufgerufen wird. Der Timer wird jedoch nie ausgelöst, wenn ich ihn innerhalb des Blocks einrichte. Ich verstehe nicht, warum es einen Unterschied gibt:

self.timer = Timer.scheduledTimer(timeInterval: 1,
                                  target: self,
                                  selector: #selector(self.foo),
                                  userInfo: nil,
                                  repeats: true)

Ich habe die Selbstreferenzen nicht verwendet, als ich sie anfänglich außerhalb des Blocks aufgerufen habe, aber wenn ich sie einmal drinnen hatte, war sie erforderlich. Ich habe jedoch den exakt gleichen Code außerhalb des Blocks erneut getestet und er funktioniert immer noch.

Der Block ist ein Vervollständigungs-Handler, der aufgerufen wird, nachdem die Erlaubnis für @ erfragt wurdHealthKit Verwandte Informationen.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage