1

我被分配到一个我还没有完全掌握领域知识的应用程序。在该应用程序中,我将联系人从通讯录导入到我的应用程序。它在其他设备上运行良好,但 iPod 给我带来了一定数量的联系人问题。如果联系人<3k,则一切正常。如果联系人为 4k+,则内存使用统计数据将超出图表:

在此处输入图像描述

疯了吧。现在,如果我幸运的话,有时它只会给我一个低内存警告并继续工作。否则它只是将应用程序发送到后台,在控制台中我看到这个异常:

Communications error: <OS_xpc_error: <error: 0x3623a654> { count = 1, contents =
"XPCErrorDescription" => <string: 0x3623a854> { length = 22, contents = "Connection interrupted" }
}>

当我尝试将应用程序带到前台时,我发现它回到了登录页面(起始页面)而不是我离开的页面。所以我不确定它是崩溃还是什么。我猜它会在清除所有应用程序数据后重新启动应用程序。

在阅读了这个这个和Stackoverflow 上的这个问题并查看了统计数据后,我确信这是 XPC 这样做的,因为 App 占用了大量内存

我可能会引入诸如分页之类的东西,以便在某一点仅检索有限数量的联系人并在 tableview 滚动时检索其他联系人,但问题是我需要在某一点或另一个点检索所有联系人(以发送到我的服务器),如果用户决定在我的应用程序上将这些联系人添加到他的团队,所以无论如何这一定会发生。我正确地重新分配了用于保存大量数据的数据结构,但它从来没有真正解决过该部分,因为它在从通讯簿中读取联系人时崩溃。还有一些循环对联系人进行分类、按字母顺序排序、过滤掉等,因此它们也会增加开销。所以基本上代码是一团糟,但客户端是无情的,否决了我们为重构代码而提出的所有建议。

我该如何摆脱这种混乱?由于可能主要基于意见,因此征求建议将是题外话,但我真的需要这里的资深和有经验的人的指导来处理这件事。

TL;DR 当我需要将大量数据集以过滤状态完整发送到服务器时,我该如何处理?

4

0 回答 0