WEB开发网
开发学院手机开发iPhone 开发 通过 Objective C++ 强大功能提高 iPhone 程序的性... 阅读

通过 Objective C++ 强大功能提高 iPhone 程序的性能

 2010-02-10 00:23:00 来源:WEB开发网   
核心提示:本文是关于通过Objective C++的强大功能提高iPhone程序的性能,通过讨论现实世界中Savoy的Spots应用程序遇到的问题,通过 Objective C++ 强大功能提高 iPhone 程序的性能,本文展示了通过3个步骤对程序进行优化使其顺利运行的过程,使用Objective C++提高iPhone应用程

本文是关于通过Objective C++的强大功能提高iPhone程序的性能。通过讨论现实世界中Savoy的Spots应用程序遇到的问题,本文展示了通过3个步骤对程序进行优化使其顺利运行的过程。

Spots

使用Objective C++提高iPhone应用程序的性能

我十分喜爱软件开发的一个原因是总是会遇到这样那样的问题,而总能找到相应的解决方法。在开发Spots时,我多次遇到了UI设计的问题。为 iPhone设计一个精简的用户界面是不容易的。比如,我应该提供一个提供者过滤器(指Hotspot)按钮或将其放在Settings.app中?关于这个问题,我至少改变了二十次主意?

本文不是关于用户界面设计而是有关编程与性能。本文并不是针对用户界面而是有关编程和性能。一个最大的难题是地图的绘制(屏幕下方的长方形)。经过几种方法的试用,我发现在绘制230,000个点时,只有使用OpenGL以及大量的旁门左道才能使绘图的性能勉强被接受。根据放大的级别以及可见点点数量,我最后使用了三种不同的技术。由于我需要地图交互动作(拖动和缩放)尽可能地平滑,理想情况下为60HZ,性能是最为重要的问题。

map_spots

本文中我将分享一些能提高性能的技术。虽然它们都很简单和直接,但因为在Cocoa中很少见,所以我还是花了不少时间。例如,尽管C++和 Objective C可以非常高效地混合使用,但我在Cocoa中并没有见到许多C++。当你的目标是高性能时,Objective C++是纯Cocoa的很好的扩展。而在iPhone上,性能是应该首先需要考虑到因素。

难题

对于分布在一个矩形区域包括230,000个热点位置的地图(麦卡托投影的世界地图 the world map in mercator projection),首先必须清楚当前地图矩形区域中有多少个可见点,因为此数值可以决定使用何种绘图技术。指标值必须归一,因此整个地图覆盖了一个 {{0.0, 1.0}, {0.0, 1.0}}的矩形区域。通常情况下,程序使用的地图矩形是很小的:通常小于整个地图宽度和高度的百分之二。

map

但是我怎样有效地在数据库成千上万的点中找到可见点的数量?

1 2 3 4 5  下一页

Tags:通过 Objective 强大

编辑录入:coldstar [复制链接] [打 印]
赞助商链接