Fix “timer circular reference” leaks.

// FREEBIE
pull/1/head
Matthew Chen 8 years ago
parent afe6f9ca7a
commit c817346ee3

@ -62,7 +62,9 @@ class MessageFetcherJob: NSObject {
// Do not use in production.
func startRunLoop(timeInterval: Double) {
Logger.error("\(TAG) Starting message fetch polling. This should not be used in production.")
timer = Timer.scheduledTimer(timeInterval: timeInterval, target: self, selector: #selector(runAsync), userInfo: nil, repeats: true)
timer = WeakTimer.scheduledTimer(timeInterval: timeInterval, target: self, userInfo: nil, repeats: true) {[weak self] _ in
self?.runAsync()
}
}
func stopRunLoop() {

@ -42,6 +42,7 @@
#import <SignalServiceKit/MIMETypeUtil.h>
#import <SignalServiceKit/NSData+Base64.h>
#import <SignalServiceKit/NSDate+millisecondTimeStamp.h>
#import <SignalServiceKit/NSTimer+OWS.h>
#import <SignalServiceKit/OWSAcknowledgeMessageDeliveryRequest.h>
#import <SignalServiceKit/OWSAttachmentsProcessor.h>
#import <SignalServiceKit/OWSCallAnswerMessage.h>

@ -698,11 +698,12 @@ class CallViewController: UIViewController, CallObserver, CallServiceObserver, R
if callState == .connected {
if callDurationTimer == nil {
let kDurationUpdateFrequencySeconds = 1 / 20.0
callDurationTimer = Timer.scheduledTimer(timeInterval: TimeInterval(kDurationUpdateFrequencySeconds),
callDurationTimer = WeakTimer.scheduledTimer(timeInterval: TimeInterval(kDurationUpdateFrequencySeconds),
target:self,
selector:#selector(updateCallDuration),
userInfo:nil,
repeats:true)
repeats:true) {[weak self] _ in
self?.updateCallDuration()
}
}
} else {
callDurationTimer?.invalidate()
@ -710,7 +711,7 @@ class CallViewController: UIViewController, CallObserver, CallServiceObserver, R
}
}
func updateCallDuration(timer: Timer?) {
func updateCallDuration() {
updateCallStatusLabel(callState: call.state)
}

Loading…
Cancel
Save