gpt4 book ai didi

iphone - iPhone 中的 UITableView 具有大量(可能有 100 万个条目)数据

转载 作者:行者123 更新时间:2023-12-03 21:17:29 25 4
gpt4 key购买 nike

我正在开发一个应用程序,需要通过在表格 View 中无限滚动来加载超过 100 万个条目。每次请求将发送 1000 个条目,一旦数据被下载并通过 JSON 库解析,表就会重新加载。我已经通过 CoreData 使用“setFetchBatchSize = 1000”实现了这一点。

StreamModal *modal = [[StreamModal alloc]init];
StreamModal *modal = [NSEntityDescription insertNewObjectForEntityForName:@"StreamModal" inManagedObjectContext:managedObjectContext];
if([self isNotNull:[streamDataDict objectForKey:@"_id"]])
modal.stream_id = [streamDataDict objectForKey:@"_id"];

-(void)reloaData{
@try {
NSError *error;
if (![[self fetchedResultsController] performFetch:&error]) {
// Update to handle the error appropriately.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
exit(-1); // Fail
}
NSLog(@"ferchresults count %d",[[_fetchedResultsController fetchedObjects]count]);
}
@catch (NSException *exception) {
NSLog(@"exception raised in reloadData in streamViewController class %@",exception);
}
@finally {

}
}


- (NSFetchedResultsController *)fetchedResultsController {

if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"StreamModal" inManagedObjectContext:appDelegate.managedObjectContext];
[fetchRequest setEntity:entity];

NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];

[fetchRequest setFetchBatchSize:1000];
//[fetchRequest setFetchLimit:2000];

NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:appDelegate.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;

fetchRequest = nil;
theFetchedResultsController = nil;

return _fetchedResultsController;

}

这是我正在使用的代码,当连接完成加载数据时,我将数据填充到 NSManagedObject Class(StreamModal) 中,然后调用重新加载数据。这里的问题是,在我加载表中的 12000 个条目后,应用程序出现内存异常崩溃了。我如何加载所有条目而不会出现内存异常。我是 CoreData 概念的新手,并已通过开发人员指南阅读了核心数据概念,但我没有找到任何与内存处理相关的信息。请帮我。

最佳答案

我希望您正在使用 ARC?因为您没有释放任何初始化的对象。 (如果不是,这就是你的答案。)

但无论如何:您是否尝试过使用 Instruments 来查看哪些对象增加的内存占用最多?这将是一个很好的起点。

关于iphone - iPhone 中的 UITableView 具有大量(可能有 100 万个条目)数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9568728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com