Swift'de yinelemeli bir bellek sızıntısı ile ilgili bir sorunla karşılaştığınızda, bir başka tekil kapağın içinde bir tekil çağrılıyor.Hızlı Kapanışlar [unowned singleton]
NetworkManager.sharedInstance.doThingWithCompletion(urlString) { [unowned self] (complete) -> Void in
if complete == true {
if self.fetchedResultsController.fetchedObjects?.count > 0 {
CoreDataManager.sharedInstance.save(self.dictionary, completion: { (complete) -> Void in
})
}
}
}
Tekil yakalama listesine uygun olarak nasıl eklenir? Bunu yapmalı mıyım?
Quantaliinuxite tarafından Benekli DÜZENLEME
, Çekirdek Veri Yöneticisi mimarisinin bu tür ... kesinlikle hiçbir problem bir sorunu vardı.
static let sharedInstance = BFSCoreDataManager()
deinit {
NSNotificationCenter.defaultCenter().removeObserver(self)
}
// MARK: - Saving
func observeContext(context:NSManagedObjectContext) {
NSNotificationCenter.defaultCenter().addObserver(
self,
selector:"mergeChangesFromNotification:",
name: NSManagedObjectContextDidSaveNotification,
object: nil) // ** PROBLEM WAS HERE **
}
func mergeChangesFromNotification(notification:NSNotification) {
dispatch_async(dispatch_get_main_queue()) {
self.managedObjectContext.mergeChangesFromContextDidSaveNotification(notification)
}
}
için kısaltılabilir Teklileri tam olarak nasıl "sızmış" olarak tanımlıyoruz? Doğası gereği hiçbir zaman serbest bırakılmazlar ... – Quantaliinuxite
Evet iyi bir nokta .. Bunu tanımlamak için, iç tektonu yöntemini çağırmak, bellek çökmesine kadar üssel olarak spiraller. Yöntem boş olsa bile. – Magoo
ve CDM singleton, herhangi bir noktada NetworkManager'ınızı aramıyor mu? Hata ayıklamak için yapabileceğiniz bir şey yığın izine bakmak ve tüm özlü shenanigan'ın neyle ilgili olduğunu görmek. – Quantaliinuxite