मैं एक स्मृति रिसाव जो PFBCoreData अनुरोध लायें कास्टिंग [कोई] से [AnyObject] स्मृति रिसाव
को समझने में असमर्थ हूँ का सामना करना पड़ रहा पैदा करताकॉल ट्रेस:
- + 0x196 callq "DYLD-आधार $$ NSManagedObjectContext.fetch (NSFetchRequest) फेंकता है -> [एक]"
- + 0x8c callq "_arrayForceCast ([एक]) -> [बी]"
- + 0xde callq "Collection.map ((A.Iterator.Element) फेंकता है -> A1) फेंकता है -> [ए 1]"
- + 0x19e callq "ContiguousArray.reserveCapacity (इंट) ->()"
- + 0xAA callq "_ContiguousArrayBuffer.init (uninitializedCount: इंट, minimumCapacity: इंट) -> _ContiguousArrayBuffer"
- + 0x42 callq "ManagedBufferPointer.init (_uncheckedBufferClass: AnyObject.Type, minimumCapacity: इंट) -> ManagedBufferPointer"
- + 0x0f callq "swift_slowAlloc"
- + 0x04 कॉलक "DYLD-STUB $$ malloc"
- + 0x13 कॉलक "Malloc_zone_malloc"
- + 0x8f movzbl 71,543 (% RIP),% eax
संपादित करें:
मैं आगे कोड की जांच की और मुझे लगता है कि पता चला वास्तविक रिसाव तब होता है जब मैं कास्टा प्रकार [किसी भी] को [किसी भी ऑब्जेक्ट] को कोर्डटा लाने के अनुरोध में
func fetchEntity<T: NSManagedObject>(entityClass:T.Type,setPredicate:NSPredicate?) -> [AnyObject]
{
let entityName = NSStringFromClass(entityClass)
let fetchRequest:NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName: entityName)
fetchRequest.predicate = setPredicate
fetchRequest.returnsObjectsAsFaults = false
var result:[AnyObject] = []
do
{
result = try cdh.managedObjectContext.fetch(fetchRequest) --> right here is the leak, when i cast the return object of [Any] to [AnyObject]
}catch let error as NSError
{
debugPrint("error in fetchrequest is",error)
result = []
}
return result
}
संपादित करें: // मॉडल वर्ग
class func getEntities<T: NSManagedObject>(entityType: T.Type,completion: ([AnyObject]) -> Void)
{
let teacherList = coreDataOperation.fetchEntity(entityClass: entityType, setPredicate: nil)
completion(teacherList)
}
// cdh.managedObjectContext कोड
lazy var cdh:CoreDataStore = {
let cdh = CoreDataStore()
return cdh
}()
class CoreDataStore: NSObject{
lazy var managedObjectContext: NSManagedObjectContext = {
// Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.) This property is optional since there are legitimate error conditions that could cause the creation of the context to fail.
let coordinator = self.persistentStoreCoordinator
var managedObjectContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
managedObjectContext.persistentStoreCoordinator = coordinator
return managedObjectContext
}() }
कृपया एक कोड जब u're इस fetchEntity समारोह बुला पेस्ट करें। आप चयनकर्ता कर रहे हैं? अप्रत्याशित Value लेना? – Kuba
आप किस संदर्भ का उपयोग कर रहे हैं? इस fetch के लिए अभी क्या बनाया गया है? –
अनुरोधित कोड के साथ संपादित किया गया। – iSwift