Je cours un rapide NSTimer (tous les 0.15s), et je vois que toutes les 10 secondes environ l'augmentation de la mémoire d'environ 0.5mb.Swift: fuite de mémoire NSTimer
Voici mon code:
dispatch_async(dispatch_get_main_queue(),{
//Prepare timer handshake
if let tmr = self.tmrHandshake {
tmr.invalidate()
self.tmrHandshake = nil
}
self.tmrHandshake = NSTimer.scheduledTimerWithTimeInterval(0.15, target: self, selector: #selector(self.sendLifeBeat), userInfo: nil, repeats: true)
NSRunLoop.mainRunLoop().addTimer(self.tmrHandshake!, forMode: NSRunLoopCommonModes)
})
Et la méthode de sélection:
dynamic private func sendLifeBeat() {
let dataBytes = NSMutableData(data: lifebeatCmd.dataUsingEncoding(NSUTF8StringEncoding)!)
dataBytes.appendData(terminator.dataUsingEncoding(NSUTF8StringEncoding)!)
socketClient!.writeData(dataBytes, withTimeout: 5, tag: 1)
}
Ces "dispatch_async" est appelée dans une méthode qui est en cours d'exécution sur un thread d'arrière-plan.
Avez-vous une suggestion sur la façon de résoudre ce problème? Merci.
double possible de [NSTimers provoquant des fuites] (http://stackoverflow.com/questions/5172711/nstimers- provoquant des fuites) –
@CodeDifferent Difficile d'appeler 'retain()' dans le code Swift. –