2013-03-21 50 views
0

让我来快速发布。到目前为止,我的代码没有问题。我唯一关心的是内存管理。让我明确我的应用逻辑。未知的原因收到内存警告

  1. 当App全局启动的NSMutableDictionary被声明和近300个图像被添加到词典有各种键和图像使用pathForResource加入:ofType方法。

  2. 后,我的RootViewController的加载我35个的自定义UIViews添加到同一个全局字典与其它键。(这RootViewController的将不被经常使用)

  3. 我有4个ViewControllers我要去的地方使用这个UIViews和图像到全局字典中的所有ViewController。

  4. 我释放视图,并使其在移动到另一个viewController时为零。

  5. 我的问题是当我在ViewControllers之间快速移动(1 - > 2 - > 3 - > 4 - > 1)。如果我这样做了4至6次,它就会崩溃。

  6. 如果我慢慢移动,它会在10-15次后崩溃。

我不知道为什么它会崩溃,甚至我的活动字节是最大5 MB。所有我从控制台获取,也从设备日志收到内存警告。使用仪器时不会出现泄漏,也不会出现脏污大小或常驻大小。

虽然在模拟器中运行,但我没有得到这个问题只在多个设备上我得到了这个问题。

我有以下怀疑

  • 无论其良好的添加在全局字典的一切。我的想法是,以减少加载时间每ViewControllers

  • 重用我们可以使用pathForResource或图像命名方法相同的图像..提前

谢谢...

+0

请勿使用imageNamed方法,而应使用imageWithContentsOfFile:方法。 ImageName会杀死你的应用程序,你会在白天搜索星星..: - /我希望你缓存图片在你的设备上(缓存或其他目录)。 – 2013-03-21 12:51:20

回答

5

所以你的问题:

原因不明收到内存警告

第一个原因:

当应用程序被全球发布的NSMutableDictionary声明和 近300个图像添加到字典各种按键和图像是使用pathForResource补充:ofType方法。

原因二:

后,我的RootViewController的加载我35的自定义UIViews添加到 相同的全局词典的另一个关键。(这RootViewController的 不会被经常使用)

其他问题:

其无论是好是添加在全局字典的一切。我的想法是 减少加载时间每ViewControllers

不,这不是...... Lazy Initialization

因为我们可以用pathForResource或命名 方法图像重复使用相同的图像..

你可以使用任何你想要的,只要你使用它时,你真正需要它。