接收内存警告的未知原因

时间:2013-03-21 12:48:20

标签: ios xcode uiimage instruments nsmutabledictionary

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

  1. 当全局启动App时,声明了NSmutableDictionary,并且使用各种键添加了近300个图像,并使用pathForResource:ofType方法添加了图像。

  2. 在我的rootViewController加载后,我的35个自定义UIViews被添加到另一个键的同一个全局字典中。(这个rootViewController不会经常使用)

  3. 我有4个ViewControllers,我将把这个UIViews和图像用于全局词典中的所有ViewControllers。

  4. 我移动视图并在移动到另一个viewController时将其设为nil。

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

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

  7. 我不知道为什么它崩溃甚至我的Live字节最大5 MB。所有我从控制台和设备日志获得的是Received Memory警告。使用仪器时没有泄漏,没有脏的尺寸或居民大小。

    在模拟器中运行时,我不会在多个设备上遇到此问题,我遇到了这个问题。

    我有以下怀疑

    • 是否可以在全局字典中添加所有内容。我的想法是减少每个ViewControllers的加载时间

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

    提前致谢...

1 个答案:

答案 0 :(得分:5)

所以你的问题:

  

接收内存警告的未知原因

第一个原因:

  

当App全局启动时,声明了NSmutableDictionary   将近300张图像添加到该词典,其中包含各种键,并使用pathForResource:ofType方法添加图像。

第二个原因:

  

在我的rootViewController加载后,我的添加了35个自定义UIViews   带有另一个键的相同全局字典。(这个rootViewController   不会经常使用)

其他问题:

  

是否可以在全局字典中添加所有内容。我的想法是   减少每个ViewControllers的加载时间

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

  

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

只要您在实际需要时使用它,就可以使用您想要的任何内容。