在MonoTouch中的多个屏幕之间来回处理的构造方法

我正在开发iOS版MonoTouch中的应用程序。

这个function的很大一部分是用户需要在不同的页面(屏幕)之间不停地滑动,来回移动。

我需要记住内存消耗,所以我的想法是我一次只能在内存中有几个屏幕。 例如,延迟只提前加载下一个屏幕,所以用户滑动时可用。 (或在刷卡上延迟加载)。

当用户滑回上一页时,我需要确保该页面仍然在内存中,并且没有留下内存。 在后面几页,我可以懒惰重新加载,一旦用户滑回。 因此,我需要一种机制来发送屏幕给GC,如果用户一段时间没有被用户查看,并且在用户滑动到该页面时自动加载它们。

我正在考虑创build一个对象列表,其中每个对象都有关于在视图上显示的信息以及对实际视图本身的引用。 如果这个引用是空的,我知道创build视图。 如果引用存在并且没有被处理,我可以向用户显示现有引用。 当用户左右滑动时,我可以转到列表中的下一个(或上一个)项目,并执行相同的操作。 检查它是否有一个视图引用,并加载该视图,或创build它。

性能是关键,因为用户可能在数百(或更多)个屏幕上滑动。

有关速度和内存pipe理的最佳体系结构的任何想法?

关键是如果可能的话,重用视图。 在我的应用程序中,我已经向左/向右滑动,类似于我想要的,我只需要创build三个视图:一个用于“屏幕上”,然后是右/左屏幕外(尽pipe左边直到需要时才创build)。

您可以通过尽可能多地执行与您的页面在线程中构build相关的内容,并且仅更新主线程上的UI来获得相当的创造性。 另外,我确定首先在加载新的数据集之前,首先看到要显示的页面,然后移动到正确的不可见页面,如果有意义的话,留下不可见的页面。 当用户滑动到新页面时,视图会被重用,并在较大的UIScrollView内容区域中移动。