代码之家  ›  专栏  ›  技术社区  ›  Rudiger

回应didReceiveMemoryWarning古怪

  •  1
  • Rudiger  · 技术社区  · 14 年前

    现在我想知道当这种情况发生时它实际使用了多少内存,只有10MB的实际内存和100MB的虚拟内存。当时的短信应用程序使用了30MB内存,运行正常。还有其他应用程序,比如邮件,使用的比我的应用程序还多。跳板上升5MB所以没什么特别的。这也是在iphone4上运行的,所以应该有足够的内存(我的计算大约还有256MB的空闲空间)。

    如有任何答复,将不胜感激。

    编辑:Springboards虚拟内存上升到450MB,覆盖层打开,一旦达到512MB,就会发出内存警告。这就是问题的根源吗?总的虚拟机总是高于512MB,所以它必须使用虚拟机的闪存,因此不应该引起内存警告

    3 回复  |  直到 14 年前
        1
  •  1
  •   Community George Stocker    7 年前

    解决方案是将所有MKpolygonView合并到一个MKpolygonView中。进一步的细节可以找到 here

        2
  •  0
  •   Stefan Arentz    14 年前

        3
  •  0
  •   Greg Combs    14 年前

    我注意到的一点是,仅仅从地图视图中删除覆盖(如mkpolygon)是不够的。至少有两件事没有发生。。。

    这会导致许多问题,特别是当您可能使用大量的覆盖时。我做了一些事情来抵消这一点。

    1. 我不能把它们都塞进一个MKPolygonView或AppleDevForum帖子中建议的“MultiPolygonView”,因为我的目标是ios3.2,它排除了这些“仅ios4”类的子类。。。您仍然可以在3.2中使用它们,只是不能将它们子类化
    2. 决定,由于我的多边形坐标数非常高,我限制屏幕上的数字在任何时候都为2。碰巧对于我的申请来说,这是一个合适的期望。因此,我将这两个多边形视图存储为地图视图控制器的属性,并根据需要重用它们。
    3. 路径

    这是唯一的方法,我可以设法改变屏幕上的多边形覆盖,清除旧的多边形,并强制释放内存。

    当然,如果有更好、更有效的方法,我愿意接受建议!