ensure repeats true timers are released if self is released
This commit is contained in:
parent
98063956b0
commit
a82b62ce05
@ -1534,8 +1534,12 @@ public class ConversationInputToolbar: UIView, LinkPreviewViewDraftDelegate, Quo
|
||||
)
|
||||
|
||||
voiceMemoUpdateTimer?.invalidate()
|
||||
voiceMemoUpdateTimer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { [weak self] _ in
|
||||
self?.updateVoiceMemo()
|
||||
voiceMemoUpdateTimer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { [weak self] timer in
|
||||
guard let self else {
|
||||
timer.invalidate()
|
||||
return
|
||||
}
|
||||
self.updateVoiceMemo()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -343,8 +343,12 @@ extension ConversationViewController {
|
||||
markAsReadLogger.info("Starting read timer for \(caller).")
|
||||
|
||||
readTimer?.invalidate()
|
||||
let readTimer = Timer(timeInterval: 0.1, repeats: true) { [weak self] _ in
|
||||
self?.readTimerDidFire()
|
||||
let readTimer = Timer(timeInterval: 0.1, repeats: true) { [weak self] timer in
|
||||
guard let self else {
|
||||
timer.invalidate()
|
||||
return
|
||||
}
|
||||
self.readTimerDidFire()
|
||||
}
|
||||
self.readTimer = readTimer
|
||||
RunLoop.main.add(readTimer, forMode: .common)
|
||||
@ -380,8 +384,12 @@ extension ConversationViewController {
|
||||
|
||||
func startReloadTimer() {
|
||||
AssertIsOnMainThread()
|
||||
let reloadTimer = Timer(timeInterval: 1, repeats: true) { [weak self] _ in
|
||||
self?.reloadTimerDidFire()
|
||||
let reloadTimer = Timer(timeInterval: 1, repeats: true) { [weak self] timer in
|
||||
guard let self else {
|
||||
timer.invalidate()
|
||||
return
|
||||
}
|
||||
self.reloadTimerDidFire()
|
||||
}
|
||||
self.reloadTimer = reloadTimer
|
||||
RunLoop.main.add(reloadTimer, forMode: .common)
|
||||
|
||||
@ -384,8 +384,12 @@ extension LinkedDevicesTableViewController: LinkDeviceViewControllerDelegate {
|
||||
self.isEditing = false
|
||||
|
||||
pollingRefreshTimer?.invalidate()
|
||||
pollingRefreshTimer = Timer.scheduledTimer(withTimeInterval: 10, repeats: true) { [weak self] _ in
|
||||
self?.refreshDevices()
|
||||
pollingRefreshTimer = Timer.scheduledTimer(withTimeInterval: 10, repeats: true) { [weak self] timer in
|
||||
guard let self else {
|
||||
timer.invalidate()
|
||||
return
|
||||
}
|
||||
self.refreshDevices()
|
||||
}
|
||||
|
||||
let progressText = OWSLocalizedString("WAITING_TO_COMPLETE_DEVICE_LINK_TEXT",
|
||||
|
||||
@ -95,7 +95,11 @@ public class AudioPlayer: NSObject {
|
||||
|
||||
audioPlayerPoller?.invalidate()
|
||||
let audioPlayerPoller = Timer(timeInterval: 0.05, repeats: true) { [weak self] timer in
|
||||
self?.audioPlayerUpdated(timer: timer)
|
||||
guard let self else {
|
||||
timer.invalidate()
|
||||
return
|
||||
}
|
||||
self.audioPlayerUpdated(timer: timer)
|
||||
}
|
||||
RunLoop.main.add(audioPlayerPoller, forMode: .common)
|
||||
self.audioPlayerPoller = audioPlayerPoller
|
||||
|
||||
Loading…
Reference in New Issue
Block a user