Ich bin eine schnelle NSTimer (alle 0,15s), und ich sehe, dass etwa alle 10 Sekunden die Speichererhöhung von etwa 0,5 MB.Swift: NSTimer Speicherleck
Hier ist mein 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)
})
Und die Auswahlmethode:
dynamic private func sendLifeBeat() {
let dataBytes = NSMutableData(data: lifebeatCmd.dataUsingEncoding(NSUTF8StringEncoding)!)
dataBytes.appendData(terminator.dataUsingEncoding(NSUTF8StringEncoding)!)
socketClient!.writeData(dataBytes, withTimeout: 5, tag: 1)
}
Diese "dispatch_async" innerhalb einer Methode aufgerufen wird, die auf einem Hintergrund-Thread ausgeführt wird.
Haben Sie Vorschläge, wie Sie dieses Problem lösen können? Danke.
Mögliche Duplikat von [NSTimers verursachen Lecks] (http://stackoverflow.com/questions/5172711/nstimers- verursacht-Lecks) –
@CodeDifferent schwer zu 'retain()' in Swift-Code. –