在讨论了三大移动平台有趣的历史后,下面来看一下与开发有关的对比,在这一部分我将对平台,IDE和模拟器进行介绍和对比。
Windows Mobile
可以使用.Net Compact Framework(紧凑框架)开发Windows Mobile应用,也可以使用C和C++,但使用.Net开发的好处是可以更容易与桌面和服务器应用集成。Visual Studio当然是使用.Net开发的非常好的IDE了,与Eclipse和Xcode/ Interface Builder比起来,就好像是2000年的奔驰SLK和2009年的法拉利599相比,集成度,速度和智能/代码对比,项目的组织这些在Visual Studio中都要好一些。
WM开发最让人崩溃的是控件,如果你不花时间加入特殊的风格,没有特殊设计能力的话,那WM应用程序将会非常丑陋,我将会拿WM和iPhone组件实现的同样程序做对比,真的是不可同日而语。iPhone凭借时尚的按钮,漂亮的文本框和内置的动画,即使看上10遍也不会有视觉疲劳。
开发WM应用程序还有一点不爽的就是Visual Studio不是免费的,但你可以下载90天试用版软件,到期后可以卸载重装继续获得90天试用期。
最后就是模拟器,WM模拟器一直都比较出色,发展至今已经相当成熟了,我希望模拟器能够更快,当我看到Android模拟器那如蜗牛般的速度后,我也感到很满足了。
iPhone
每个第一次接触iPhone开发的人都会有一个相同的印象,那就是要打开好多好多的窗口,iPhone开发常用的有两个工具,用于编码的Xcode和用于GUI设计的Interface Builder,但Xcode算不上真正的IDE,Interface Builder也算不上真正的完整。但我非常喜欢iPhone开发辅助工具Instruments,在将应用程序发布到App Store之前,我一般会使用Instruments检查程序是否存在内存泄露,通过它我可以通过一个图形界面查看正在运行的程序内存使用情况,如果有内存泄露,它会告诉我准备的代码行位置。
再说说iPhone的模拟器,当我开发iPhone应用程序时,我更喜欢使用模拟器,因为iPhone模拟器实在做得太好了,速度也让我很满意。但iPhone开发最糟糕的是个人偏好,对于我而言,Objective-C是一个坎,与C#比起来,它明显比较落后,如果你有任何异议,你可以看看下面的Objective-C数组初始化代码就知道了。
2
3 @interface MyListClass : NSObject {
4
5 NSArray *list;
6
7 }
8
9 @property (nonatomic, retain) NSArray *list;
10
11 // in your .m
12
13 @synthesize list;
14
15 - (void) dealloc {[list release];
16
17 [super dealloc];
18
19 }
20
21 // whereever you set it up ( init most likely ):
22
23 NSArray *temp = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:1], [NSNumber numberWithInt:2], [NSNumber numberWithInt:3], nil];
24
25 self.list = temp;
26
27 [temp release];
28
29
从上面的代码可以看出,需要用到alloc和dealloc,注意不能将dealloc与取消订阅理解为相似的了,当操作系统发现内存问题后,它只会粗暴地kill掉你的应用程序。
iPhone开发了一个让人不爽的事是需要去iPhone开发者中心注册,才能下载iPhone SDK,每年需要向苹果支付99美元,否则你的应用程序就无法在App Store上发布。
Android
和Windows Mobile一样,开发Android应用程序有两种选择,一种是主流的Java和标准的SDK,因为Android是基于Linux的,因此第二种就是使用C和C++,自Android 1.5后,就使用的是NDK了。
推荐使用的IDE是Eclipse,但也可以选择其他IDE,当我第一次接触Eclipse时它还很差劲,但现在我满意多了,可以原生态支持Visual Studio,但有两个糟糕的事情是代码填充和项目组织(又叫工作区)。已经有一个叫做Holy Grail的.Net爱好者试图将Eclipse改造成Visual Studio的风格,我没有去试过,如果你有兴趣,可以点击这个链接http://stackoverflow.com/questions/146020/making-eclipse-behave-like-visual-studio。
Android的模拟器也算比较满意,除了启动速度让人崩溃外,它能与IDE良好地集成,大多数时候可以在上面进行调试,但如果你没有使用模拟器的标准屏幕分辨率,运行时可能会遇到问题,如看不到按钮,这时就只有使用快捷键了。
快捷键模拟器功能:
F8手机网络切换开关、F9代码分析切换开关(当设置了-trace选项)、Alt-ENTER切换全屏模式、Ctrl-T切换轨迹球模式、Ctrl-F11, KEYPAD_7切换到前一个布局、Ctrl-F12, KEYPAD_9切换到下一个布局、KEYPAD_MULTIPLYincrease onion alpha、KEYPAD_DIVIDEdecrease onion alpha