【发布时间】:2010-02-05 05:16:01
【问题描述】:
我有一个 Iphone 应用程序,其中包含大量嵌套的 NSArray 字符串。 NSArray 有 3 层深,最深的层总共有大约 15,000 个字符串。绝大多数字符串少于 20 个字符。每隔一段时间,我的应用就会挂起一段时间,然后在 5-25 秒左右后恢复工作。这显然是不可接受的。如果我只使用 2,000 个字符串运行应用程序,挂起就会变得更加罕见。所以我很确定大型 NSArray 会导致问题。
哪种替代数据结构可能会更好地工作?我所需要的只是在应用程序启动时从文件中快速读取数组,然后能够从数组中随机访问字符串。 [实际上比这复杂一点;我需要能够从数组的预定子集中抓取随机字符串。] 该程序可能每秒抓取一次随机字符串。
顺便说一句,NSArray 当前存储在单例类中。
【问题讨论】:
-
您应该调查导致挂断的原因。您如何要求这些物品?没有理由直接索引 (
objectAtIndex:) 三次会导致 20 秒的等待。 -
我的部分问题是我并不真正了解这些工具。我使用 Shark 进行了分析,它说 PID#0 正在使用我 90+% 的 CPU。但我不知道 PID#0 是什么。
标签: iphone performance nsarray