iphone 开发学习笔记三

经过一段时间的学习,看文档,算是对Mac OS,Objective C有了一些基本的了解,直正要学会iphone 开发还是要通过实战。在选择开发工具,对于选择XCode+Objective C 还是用 MonoTouch 几经反复,经过激烈的心理斗争,最终选择两种都支持 :-) . 我的目标是将地图开发包移植到 iPhone (iOS)和 Mac OS上,原始代码是Java 和 C# ,似乎选择 MonoTouch 是个正确的选择,而且事实上.Net 平台上C#代码基本上可以不用修改在MonoTouch 编译通过,移植工作量很小,似乎没什么挑战性。另外经过几周的Objective C和 Cocoa Touch学习,对于开发人员来说XCode+Objecitve C实在不是什么好用的开发环境,Objective C本质上还是C,重新回到用C写代码真是不习惯,满脑的指针又回来。。。
但用MonoTouch 基本上没什么工作量,也就不能较深入的了解iOS,另外用MonoTouch也有两个比较大的缺点:一是编译后可执行程序较大,iphone不带.Net 运行环境,MonoTouch 编译后的程序需要包含MonoTouch运行环境,我查到网上一个资料,一个简单的”Hello world”,用Objective C写,最后大约50k,而用MonoTouch大约是5M. 另一个缺点可能是致命的,不是技术上的而是来自Apple限制,Apple在新的开发者协议中明确指出在iphone写程序只能是C,C++,Objective C或是JavaScripts,有点变态的规定,尽管Apple很难强制执行这个政策,但对用MonoTouch开发iphone 4还是一个很大的风险。最终我还是决定两个都支持。其实主要是支持Objective C 接口。MonoTouch 接口支持工作量很小。
下面就说说移植的工作量,在后面的文章中陆续介绍在移植中碰到的问题及解决方法,C#和Objective C是两种异常迥异的语言,.Net Framework 和 Cocoa Touch Framework 也大不相同。移植工作是一个非常有挑战性的工作:)。
下图是引路蜂地图开发包的包之间关系图。其中绿色为对外开放的API.
所用的平台API涉及到 String, Collections ( Array, Hashtable etc) (Util), Network (Http etc) ,Ajax (Json), 文件操作 (RMS),加密解密 (Crypto),二维图形 (Drawing) ,最后是地理信息系统(GIS)。
这些平台API在 .Net Framework 和 Cocoa Touch 实现不同,C#和 Objective C语法不同,都给移植增加了工作量。在之后的文章会慢慢介绍。

iphone 开发学习笔记三_第1张图片

你可能感兴趣的:(iPhone)