跨界开发连载1

第1篇 准备

第1章 引言

在本章中,首先我们将介绍作为.NET开发人员,在进入iPhone/iPad开发领域当中所遇到的主要障碍。同时,我们也要对于将要进入的全新领域有一个简单的感性认识,从而克服这种恐惧感,如果你已经信心满满,并且已经对于Mac OS X以及iPhone/iPad平台以及相关的开发环境有所接触,那么可以直接跳转到下一章进行更加系统的学习。

1.1 面前的六座大山

开发者往往对于开发语言以及开发环境有着宗教般的狂热,尤其对于已经入门但尚未运用精熟的初学者,更是如此。作为一名专业的开发人员,我们已经习惯了在论坛、博客上看到各种关于开发语言以及开发环境的辩论赛,比如论证.NET与Java孰优孰劣,C以及C++谁的生命力更强等等。往往这种论证会持续一段时间后不了了之,而后再过一段时间,新的类似的辩论赛又会重复上演。

这与宗教信仰一般,我们很难通过简单的辩论,就可以让另外一方改变自己的观点。所以这种争论除了浪费时间之外,对于开发者来说,没有任何益处。

其实不仅开发者,最终用户也会经常争论Windows XP以及Mac OS X谁更符合用户习惯、Linux与Windows哪个操作系统更加安全之类的问题。这种问题真的有解吗?我个人认为很多答案都需要限定相关的条件才可以给出答案。并且很多答案只有形而上学的意义,并不是完全普适的真理。

而本书的“越界开发”,面向那些已经沉浸于.NET开发两年以上的开发人员,帮助他们跨越以下六个大的障碍:

1.操作系统:作为国内的开发人员来说,尤其是.NET开发人员,Windows基本上就是其开发的全部,我们的日常工作以及编程都是在Windows上进行。开发后的应用程序要么部署到Windows Server上,要么部署到Windows Mobile,或者以Windows上的其它应用作为宿主,比如Microsoft Office或者Silverlight等。而Mac,由于其价格以及其它相关的因素,对于我们非常遥远,从而显得异常神秘。而在本书中,由于面向iPhone上进行开发,所以我们则必须与Mac OS X为伴。这是我们需要跨越的第一道障碍。

2.开发环境:Visual Studio是我本人用过的最好的IDE,尤其是刚刚发布的Visual Studio 2010,吸收了历史上所有相关IDE的长处,终于成为集大成者。而在本书中,我们则必须了解并且使用一个神秘的IDE套件:XCode、Interface Builder以及Instruments等。在这其中,很多原有的开发习惯都需要进行调整以及适应,可能刚开始的一周你会非常的不适应。

3.开发语言: 作为C#开发人员,可能你已经知道所谓的“#”,其实是代表着四个加号,即C#相当于C++++。所以C#与C以及C++是属于近亲关系,但在基因上有着很多改良。而Objective-C,单从字面上来说,与C也属于同一家族,但当你亲自阅读一段Objective-C源代码的时候,你会发现理想与事实的差距。因为事实上Objective-C是一门你很少听说过的Smalltalk 80的进化。

4.框架类库:作为C#开发人员,我们相比于C/C++开发人员来说,已经幸福了很多。因为.NET Framework已经为我们提供了丰富的Class Library,比如处理XML、HTTP请求等,只需要调用相关的类库中的API就可以非常简单的完成。在iPhone当中,我们同样也有一个类库,即Cocoa Touch(开发Mac OS X上的应用,我们需要使用的类库是Cocoa,在iPhone/iPad上则使用Cocoa Touch。两者的关系类似于.NET Framework与.NET Compact Framework)。快速掌握框架类库提供的功能也是我们必须跨越的一道障碍。

5.部署平台:相信本书的部分读者都有着Windows Mobile的开发经验。本书的部署平台虽然也是手机操作系统,但它与Windows Mobile有着很多的不同。最大的不同的就是其单任务处理机制,可能会在初期让你发狂。而对于那些原来没有接触过Windows Mobile开发的读者来说,iPhone开发与你原有的部署平台也有着很大的不同。

6. 市场推广:在笔者的日常工作中,会与很多.NET开发人员进行交流。大部分开发人员往往都会关注于开发过程,而对于开发完成后,已经成为“商业”的软件会如何在市场上推广,他们往往并不关心。而对于iPhone/iPad开发者来说,必须要自己承担所开发出来的成果的推广工作,所以这也将成为其重要的障碍。

写到这儿,可能有部分读者在心中已经打了退堂鼓。既然有这么多困难,我们为什么还要学习iPhone/iPad开发呢?

iPhone作为一款新发布的手机,于2007年1月9日,由苹果公司面向全球进行发布(见图1.1),在很短的时间内,就已经风靡全球,成为很多时尚潮人所必备的数码精品。而随之2010年4月3日,iPad的发布,更加推动了这个趋势。众多的开发商开始着力于面向iPhone/iPad平台的开发。与此同时,众多的iPhone/iPad平台上的造富神话也吸着众多的开发人员。

根据苹果公司在2010年1月5日公布的数据,其苹果应用商店(App Store)上的软件已经被下载超过30亿次。需要了解的是,App Store此时才运营仅仅一年半,在2009年9月份开始,其下载量已经超过了20亿次,那么相当于自2009年9月份,平均每天有1010万个程序被用户下载,在每秒钟则高达300个应用被下载。

创造符合用户习惯的软件,供更多的用户使用,是我们软件开发者的梦想。而iPhone/iPad平台则可以帮助我们实现这个梦想。

 

 

 

序:欲练神功,何必自宫

本文是《跨界开发:面向C#开发者的iOS开发手册》的序言,从本周开始,本书的内容将会在博客当中进行连载,每周在一节左右,欢迎大家提出意见以及建议。该书将根据大家的意见以及建议进行持续性修改。

很久很久以前,江湖上曾经有一本武功秘籍,称之为《葵花宝典》。由于此书上所记载的绝世武功,引得无数英雄趋之若鹜,一时间闹得江湖间血雨腥风。而最终历经千辛万苦,两位有代表性的人物分别获得了此书。一位是江湖上名不见经传的林平之,一位是名传天下的华山派掌门岳不群。他们在得到此书后,迫不及待得翻开了第一页,猛然发现一道让他们后悔一辈子的选择题摆在面前。在经历过内心复杂的心理斗争后,两人终于禁不住神功的诱惑,而拔刀自宫。但最终他们的下场却让我们怜之痛兮,真乃是赔了夫人又折兵呀。
而很久很久之后,Steve Jobs也同样在江湖上发出了英雄贴,名为iPhone/iPad的兵器在市场上所向披靡。截止到目前,其已经占领北美智能机市场65%的份额,同时,大量的iPhone/iPad开发人员一夜暴富的神话也让很多从事其它开发语言开发的朋友而闻之心动。

那么,作为从事.NET开发的程序员是否需要完全放弃其原有的开发经验,而开始学习全新的开发语言、使用全新的开发工具、熟悉全新的操作系统、研读全新的框架类库、了解全新的部署平台、掌握全新的发布模式呢?如果真的如此困难,那么会使很多江湖上.NET的前辈或者入门一年有余的新手而踯躇不前,毕竟挥刀自宫的毅力不是每一位都具有的。而我的回答就是:当然不是,就像功夫一样,如果我们积累了足够的内功,那么所有的门派则只是适应武术套路而已。

本书适合的读者

本书面向已经学习以及使用.NET一年以上的开发人员,曾经从事过以下领域的应用程序开发:ASP.NET、Windows Mobile、Silverlight或者Windows Form/WPF。对于C#语法已经熟悉,甚至对于一些底层机制已经精通的人员。

如果你已经了解.NET的相关功能,并且希望从事iPhone/iPad开发, 有毅力来承担其中的一些艰辛,那么本书将会试图带领走过其中的一些歧途。

本书也同样可以作为其它开发语言使用者,进入iPhone/iPad开发的入门书籍。虽然本书会重点介绍.NET开发与iPhone/iPad开发的异同,但通过纵览本书,其它语言的朋友也可以一览相关开发的机制,从而快速掌握iPhone/iPad开发的关键,并且在同时,也了解到.NET与之的异同。

本书不适合的读者

如果你符合以上条件,但希望能够继续使用C#等语言,在Windows上使用Visual Studio来开发iPhone/iPad等应用,那么很不幸,本书并不适合于你。目前iPhone/iPad上的开发必须使用Objective-C来编写,而使用Objective-C,你需要使用全新的IDE,即XCode。而要使用XCode,你需要使用Mac OS X操作系统,所以这是一个全新的挑战。

本书的示例应用

为了方便大家能够更快得学习本书中所介绍的iPhone开发知识,本书将会在随书光盘中提供相应的示例应用源代码。但为了让读者将更多的精力放在对于开发中基本原理上,所以本书不会提供数量众多的源代码。而是主要围绕以下三个示例应用进行,并且随着章节的深入,为最始的示例增添新的功能。通过这个过程,了解iPhone开发的方方面面:

  1. Hello World:在第1篇中,将主要围绕这个最简单的Hello World应用进行。通过这个示例,读者可以熟悉编程环境:Xcode、Interface  Builder等的具体使用方式,理解iPhone/iPad中各种项目类型,同时也基本了解如何使用Instruments进行性能调优的方法。
  2. RSS Reader:在第3篇开始,将会围绕RSS Reader这一目前常用的示例应用程序介绍Objective C语言的相关知识,并且了解如何使用Cocoa Touch类库进行文件处理、网络访问、数据库处理等基本操作。
  3. Hello Game:在第4篇中,将会介绍Core Graphics以及Open GL ES图像处理子系统。

本书基本框架

本书在构成框架上,共分为五篇,介绍了iPhone/iPad开发的方方面面。

在第一篇准备中,我们会向各位介绍iPhone/iPad的面向最终用户的特性,以及面向开发人员需要关注的地方。并且会从头开始,介绍如何构建开发环境。

Objective-C对于很多.NET开发人员是一门非常陌生的语言,甚至在此之前都闻所未闻。那么在第二篇当中,我们会介绍此语言的方方面面。并且通过与C#语言的对比,让大家对其有更深入的认识。在本篇当中,也会涉及到IDE的使用技巧等。

第三篇则会真正揭开iPhone/iPad开发的内幕,通过一个完整实例的介绍,让我们熟悉iPhone/iPad所使用的框架类库Cocoa Touch的方方面面,在实战中了解Cocoa Touch带给我们的便利性。当然,我们也会介绍互联网上优秀的开源类库以及应用,供大家参考。

第四篇则面向游戏开发人员所设计。大家知道,在iPhone/iPad上开发游戏应用,需要了解一个OpenGL的精简系统,即OpenGL ES。OpenGL ES虽然便捷,但对于长期从事ASP.NET/WinForm开发的人员来说,将会是一个比较痛苦的过程,本书也将通过一些实例,让大家尽快度过此过程。

在开发完所有应用后,即可以提交到App Store,供广大用户下载使用。如果开发的是商业应用,那么我们需要设计相应的收费策略,并且通过市场上的各种方式进行推广。在第五篇当中,我们将会介绍相关的市场推广策略。