我的 iPad 应用程序的性能有这个问题..
对于开发,我使用负责垃圾收集的 MonoDevelop。我会说,我的问题仍然相当笼统。
好的,我将 TabBarController 与 5 个 NavigationController 一起使用。在导航 Controller 内部有一些 Controller ,它们的 View 是 TableViews 或 ScrollViews。下一个 child 总是只是常规 View 。
我有几个问题:
1) TableViews 从不平滑滚动。我有一些 alpha 透明度,但由于我是在 Photoshop 中而不是以编程方式制作图形,因此这种透明度不会造成太大问题。表中的结果是少是多都没关系。
另一方面,我有 ScrollView 用于相同目的,即成为具有不同布局的表格,按钮也具有 Photoshop 生成的透明度。它完美地工作。
对于我申请的表 DequeueReusableCell()
效果很好(我看到滚动后内存使用量没有增加)。那么为什么表格会滚动得如此生涩?
2)我的应用程序支持旋转。当我滚动表格或 ScrollView 并同时稍微倾斜设备时,我可能会得到 1 或 2 FPS。实现轮换的最佳方式是什么?据我了解,ShouldAutorotateToInterfaceOrientation
必须在 NavigationController 链中的所有 Controller 中被覆盖。另外,我需要在 View 中添加观察者,我希望发生一些变化。我必须使用 BeginGeneratingDeviceOrientationNotifications()
在所有 View 中还是在 Main.cs 中就足够了?也许这会减慢速度?
3)一段时间后,应用程序开始收到内存警告,然后最终崩溃。我尝试使用 Instruments 读取日志并运行应用程序,但找不到崩溃的原因。
4) 从 NavigationController 堆栈弹出的 View 到底发生了什么?我不能重复使用它。但会不会是 Monotouch(或我)没有正确处理它?
我有几乎相同的 iPhone 应用程序,不支持永远不会崩溃的旋转。我想我在这个轮换中做错了什么,但我不确定是什么。
任何帮助将不胜感激。所以,提前谢谢你。
问候
最佳答案
1 - 透明胶片总是一个问题。即使您没有在代码中渲染图像,手机仍然需要对图像进行合成,这可能需要很多时间。每次显示新单元格或滚动表格时,UITableViews 都必须计算最终的合成图像,而 UIScrollViews 只能计算一次,因为图像不会改变。所以要非常小心,关闭透明度,并检查性能是否有所提高。
2 - 您不需要通知应用程序中的每个 uiview。在您只想更新的 Controller 中接收通知,例如,如果您想重新排列 UIViewControllers View 中的项目。
3 - 您有一个(或多个)内存泄漏。我的猜测是 MonoTouch 可能无法垃圾收集 UIView 或 UIViewController,因为它们仍然从 UIKit 中的某个位置链接,例如 UINavigationController
4 - 在应用程序收到内存警告通知之前,UIKit 不会释放 UIView。
关于ios - iPad性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7662754/