Meine App stürzt mit einem EXC_BAD_ACCESS Fehler ab :(Seit ein paar Tagen habe ich Kopfschmerzen. Der Absturz passiert, wenn ich wiederholt a .. UIViewController, die wiederum nicht asynchron Coredata holen Nach 3-4 mal es geschieht in der Regel die vereinfachte Situation sieht wie folgt aus:.App stürzt ab (EXC_BAD_ACCESS) bei wiederholtem Viewcontroller push/pop mit asynchronen Core-Daten holen
ich eine UINavigationController mit einem UIViewController als rootController haben Dieses UIViewController hat ein Push wie folgt aus:
Als nächstes führt der gestoßene UIViewController einen NSAsynchronousFetchR aus equest wie folgt aus:
- (void)fetchData
{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:self.entityName];
fetchRequest.predicate = self.basePredicate;
__weak typeof(self) weakSelf = self;
// Initialize asynchronous fetch request.
NSAsynchronousFetchRequest *asynchronousFetchRequest = [[NSAsynchronousFetchRequest alloc] initWithFetchRequest:fetchRequest completionBlock:^(NSAsynchronousFetchResult *result) {
dispatch_async(dispatch_get_main_queue(), ^{
weakSelf.fetchedItems = [NSSet setWithArray:result.finalResult];
});
}];
// Execute asynchronous fetch request.
[self.managedObjectContext performBlock:^{
NSError *asynchronousFetchRequestError = nil;
[weakSelf.managedObjectContext executeRequest:asynchronousFetchRequest error:&asynchronousFetchRequestError];
if (asynchronousFetchRequestError) {
DDLogError(@"Unable to execute asynchronous fetch result: %@, %@", asynchronousFetchRequestError, asynchronousFetchRequestError.localizedDescription);
}
}];
}
Der EXC_BAD_ACCESS Absturz geschieht nur, wenn die Ergebnisse der fetchedItems var Einstellung scheint es. Wenn ich diese Zeile entferne, passiert das nicht, also vermute ich, dass da etwas dran sein muss. Ich habe mit "Enable Zombie Objects" getestet, wenn ich dies aktiviere stürzt die App nicht ab und gibt mir auch keine zusätzlichen Informationen.
Jede Hilfe würde sehr geschätzt werden!
Es ist ein gutes Beispiel dafür am folgenden [link] (https://www.bignerdranch.com/blog/new-in-core-data-and-iOS-8-asynchronous-fetching/). Wenn Sie es betrachten, kann es etwas mit der Verwendung von GCD (d. H. Dem Dispatch async-Aufruf) zu tun haben, anstatt NSPersistentStoreAsynchronousFetchResultCompletionBlock für den Komplettierungsblock wie im Beispiel zu verwenden. – dean
Ich habe das versucht und es schien keinen Unterschied zu machen. Der Artikel war in der Tat hilfreich und führte mich zu einer (bisher) funktionierenden Lösung. Vielen Dank! – Tonnie