创建大量视图控制器时收到内存警告

时间:2013-09-12 16:42:36

标签: ios objective-c

任何人都可以帮我解决这个问题

我的代码:

NSMutableArray *listVC = [[NSMutableArray alloc] init];
HMScrollView *scrollView = [[HMScrollView alloc] initWithFrame:self.showView.bounds];

for (int i = 0; i < newsArray.count; i ++) {
    self.theNewDetailViewController = [[NewDetailViewController alloc] initWithNibName:@"NewDetailViewController" bundle:nil];
    self.theNewDetailViewController.abmObj = (AboutUS_MobileService*)[newsArray objectAtIndex:i];

    [self.theNewDetailViewController.view setFrame:CGRectMake(2, 0, scrollView.frame.size.width-4, scrollView.frame.size.height)];

    [listVC addObject:self.theNewDetailViewController];


    [self addChildViewController:self.theNewDetailViewController];
    [self.theNewDetailViewController didMoveToParentViewController:self];
}

[scrollView setData:listVC atIndex:index];
[self.showView addSubview:scrollView];
[self.showView bringSubviewToFront:self.imageHeader];

1 个答案:

答案 0 :(得分:0)

没有设备具有无限的内存容量,因此您需要在此方案中小心。 iOS只是告诉你内存不足。可能是因为您为视图控制器分配了太多内存。您应该使用Instruments内存分析器来查看内存消耗的位置。仪器将告诉您视图控制器有多大。然后,您可以决定在何处投入时间进行优化(减少视图或减轻重量的视图)。

您是否考虑过使用UITableView / UICollectionView来显示此内容。使用表视图和集合视图,您可以显示内容列表(类似于滚动视图),但也可以通过延迟加载和单元重用等技巧来熟悉内存使用。