3

如果这个问题被重复,我很抱歉,但我无能为力,因为我已经尝试了所有可能的解决方案,但没有任何效果,因此我问这个问题。

我一次从通讯簿数据库中的表格视图中加载了近 500 条记录。如果记录很少,比如 50 或 100,我的表显示没有任何问题。但是当记录数超过 300 条时,我遇到了一个崩溃,上面写着:

*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法在包中加载 NIB:“NSBundle(已加载)”,名称为“GroupmemberCell”

我已经阅读了其他一些具有解决方案的表格,例如签入Build Phase文件或签入 iOS 应用程序的包内容。我已经尝试了一切,但没有任何效果该文件存在于构建阶段,并且还被添加到我的应用程序文件的包内容中。我也曾经删除过这些文件,即我完全删除了它们并创建了一个新的 UITableViewCell 类,但随后也出现了崩溃。

GroupmemberCell 是我在表格视图中添加的 xib。下面是来自行数据源方法的单元格的代码片段。

静态 NSString *CellIdentifier = @"Cell";
    GroupmemberCell *cell = (GroupmemberCell*) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];;
    如果(单元格 == 零)
    {

        NSArray *cellxibfilepath = [[NSBundle mainBundle]loadNibNamed:@"GroupmemberCell" owner:self options:nil];

        if (cellxibfilepath)
        {

        for(id cellObjects in cellxibfilepath)
        {
            if ([cellObjects isKindOfClass:[UITableViewCell 类]])
            {
                单元格 = (GroupmemberCell*)cellObjects;
            }

        }
        }
    }

这里可能有什么问题,就像相同的代码适用于 100 条记录集而没有任何崩溃,但如果我获取一组 500 多条记录并将它们显示在表中,则会导致崩溃。

为了获取我没有在后台拨打任何电话的记录,我尝试过一次,但崩溃也没有解决。

我的想法:我想我一次加载大量数据,这可能会给 UI 创建的主线程带来一些问题,因为我确实在我的数组中获取数据并检查它们,然后只有我发出命令重新加载表.

如果(tableReloadArray.count!=0){
             [objtable reloadData];
        }

我在许多应用程序中看到他们以闪电般的速度加载 1000+ 数据 - 他们是如何做到的?他们的方法是什么,或者我缺少什么最佳实践,请指导我。

4

1 回答 1

0

经过大量的头脑风暴和喝了很多咖啡后,我使用“分析工具”清除了所有内存警告,然后使用“仪器工具”查看是否有任何泄漏也清除了它们。删除派生数据并清理应用程序,我就完成了。

“分析工具”提出的整个应用程序大约有 67 个问题,“仪器工具”显示的问题超过 3-4 个

我知道这听起来可能很愚蠢,但我通过这样做解决了我的崩溃问题。希望这可以帮助陷入同样问题的人。

于 2013-02-28T07:27:08.010 回答