我们的第一个iPhone程序

时间:2022-07-12 10:13:12

我们的第一个iPhone程序

过了半个月的时间,我们又在这里见面了。本期我将介绍iPhone开发主要使用的编程语言Objective-C,并带着大家在我们上期搭建好的官方SDK(后文简称SDK)开发环境上实现一个小程序。

认识一下Objective-C

其实Objective-C(后文简称ObjC)是一种对C语言进行了扩展的面向对象编程语言。ObjC的代码文件扩展名一般为M或H,在程序中,可以嵌入C语言的头文件、函数来进行调用。同时,在程序内所写的C语言样式的函数中,也是可以调用ObjC的函数和方法的。但在C语言的代码文件中,是无法直接调用ObjC的函数和方法的。造成这种情况的原因是由于ObjC是在C语言的基础上扩展出的,对C语言有兼容性,而C语言却不具备对ObjC的兼容性。在ObjC与C对应同时,与C++对应的是Objective-C++。如果你的程序中用到了C++的类,那么相应的就要使用Objective-C++。一般来说,只要将原本ObjC代码的M扩展名修改为MM即可。

由于ObjC是一种面向对象语言,因此在这里主要和C++的语法做一些简单对比。大概整理了一下,有如下几点:

第一个iPhone程序

在对Objective-C的语法有了初步的了解后,让我们进入Mac OS X(Leopard)打开之前安装好的IDE: Xcode(如果它没有出现在你Leopard的Dock上,那么你可以在/Developer/Applications里面找到它的身影)。也许你之前用惯了Visual Studio,也许你之前用惯了Eclipse,也许你习惯了其他什么IDE,但做iPhone开发,尤其是使用SDK进行iPhone开发,你很难离开Xcode。

要说到第一个程序,估计很多人都会想到Hello, World吧。这个被大家沿用下来的程序定式有助于我们去了解一门编程语言的基本,以及测试准备好的开发环境。那么,我们也来Hello, World一下吧。

第一步:启动Xcode之后,在屏幕上方的菜单中选择FileNew Project(文件新项目),这时我们会看到如图1所示的界面。这个界面中是一些预置的程序模板,可以说每个模板都有自己所适合的软件类别。

第二步:在这里,我们选择Window-Based Application(窗体类程序),点击Choose(选择)后,输入工程名称HelloWorld,并设置保存位置。这样我们就引用了一个系统提供的程序模板(见图2)。

第三步:在Classes按右键并选择AddNew File(加入新文件),这时又会出现一个文件模板的选择(见图3)。我们选择其中的UIView subclass,并点击Next(下一步),将文件命名为HelloWorldView.m。确认Also create‘HelloWorldView.h’已被勾选,最后点击Finish(完成)。

第四步:我们需要确定一下,我们的程序要针对哪个平台了,是真实设备还是模拟器,大家可以注意一下如图2所示左上角的Device 3.0|Debug(也许你的不是3.0,这个会根据所安装的SDK版本而有所不同)。在上面点击一下就可以选择所针对的平台、SDK版本以及编译类行了。这里我们把它设置为Simulator 2.2.1|Debug,其中2.2.1这个SDK版本可以随意,但需要注意的是兼容性问题。比如用2.2的SDK编译的程序只能运行在2.2及比2.2更高版本的真实设备之上,低于2.1版本的真实设备将无法运行这个程序。

第五步:要开始真的动手写代码了,在左侧的列表中找到HelloWorldAppDelegate.m,并双击它。

首先在这个文件开始的部分找到 #import 开头的行,在它的下面添加:

#import “HelloWorldView.h”

然后找到applicationDid-FinishLaunching:这个方法,在其中绿色的注释那行的下面紧挨着写上

HelloWorldView *view = [[HelloWorldView alloc] initWithFrame:[window frame]];

[window addSubview:view];

[view release];

这样,第一个文件就修改好了。这个步骤实际上就是把我们创建的一个视图(HelloWorldView)加入到窗体中,以便可以显示出来。然后就是在这个视图中显示我们要的HelloWorld了。在HelloWorldView.m中找到drawRect这个方法,将下面的代码写入这个方法里面

NSString *hello = @"Hello, World!";

CGPoint location = CGPointMake(10, 20);

UIFont *font = [UIFont systemFontOfSize:24];

[[UIColor whiteColor] set];

[hello drawAtPoint:location withFont:font];

在简简单单地增加了3段代码后,我们已经大功告成了,快来看看结果吧。选择屏幕上方主菜单的BuildBuild and Run(编译编译并运行)。稍微等待一下后,iPhone模拟器出现了,而我们想看到的“Hello, World!”就清楚地显示在上面(见图4)。

有没有一点点的成就感?不过虽然我们让屏幕上出现了期待的“Hello,World!”,以上代码及程序的实现原理可以参考/cfan/200908/iphonedm.rar中的说明。

现在我们的第一个iPhone程序已经完成了。如果想让它运行在真实设备上,利用上一期讲到的iPhone Developer Program中的详细图文说明,并不难做到。

软件开发者的队伍中,女性的身影一直是比较少见的。而对于刚刚兴起不到一年iPhone的开发队伍中,出现的女性身影更值得我们的关注,今天我就来采访一位女性iPhone开发人员shirin。

被采访者:shirin

就职于:cypress systems Ltd.

职业:programmer (Intelligent System)

你大约在什么时间开始投入iPhone的开发中的,是由于个人兴趣还是工作的原因呢?

shirin:我是在2008年7月初开始投入iPhone开发的,主要是由于工作的原因。当时公司为了增加系统多元化和吸引力而新增了这个单元。

那在这之前对iPhone开发或者说苹果公司的Mac开发有了解么?进行了快一年的iPhone研发,最大的感慨是什么?

shirin:在这之前确实没有什么了解,当时知道苹果开放开发平台时就觉得很好奇。最大的感慨嘛,苹果的原意是好的,可是这种开放方式就不一定大家全都认同了吧?比如developer的登记过程和公布开发出来的软件的方式多少有些不够友好,能放宽点会比较好。

那么shirin对App Store和iPhone软件的市场有什么样的感觉呢?这种模式你觉得会给开发人员带来什么样的好处呢?

shirin:虽然最开始的过程不容易,但是我个人觉得苹果的这种概念很好!印象最深的就是,他们把专业的事交给专业的人来做。所以就算有些地方并不能尽如人意,但总体不会太差。不过个人觉得现在定论iPhone软件的市场还为时过早了一点。

第一,从开始开发到最后的体制当中有一些环节,我觉得苹果自己还有一些工作要做。

第二,就像我们自己拥有的苹果产品一样,苹果本身的长期Fans不像微软那样多,大部分都会是新的来了,旧的走了!真正说到市场,还要看App Store能不能出一些让人长期使用,最好能像手机的电话功能一样,不用不舒服!那样的话,市场就会很快发展起来了。我个人下载的App Store程序,最多的也就玩了一两个星期而已。

对开发人员来说,Apple的硬件向来都是很专业的,所以基本上我们不会因为硬件限制创新能力!如果苹果有一天能把所有的硬件接口的API都开放出来的话,那就是咱们的福了。

之前一些国外公司调查出的App Store生存期不长这个问题,也印证了shirin的观点。不过说到这里,我突然很感兴趣,shirin为什么当初会选择这样一个女性比较少涉足的职业呢?

shirin:其实现在在大学中IT相关专业的学生里,女生的比重其实不少。但真正走进IT R&D(研发)的却是少数。我觉得是环境给我的机会。本来我是在广州中大学电子的,但是电子专业找工作对女生来说有点不容易。我就申请去香港进修,读了计算机。也算是机缘巧合,我现在工作的公司正苦于读计算机出来的人硬件理论不足。我就刚好进来了。一半坚持一半机会。

也算是天时地利人和吧,机遇总是给像shirin这种有准备的人嘛。最后有什么想对打算进入iPhone软件开发领域的人说的话么?

shirin:那就拿我自己的感觉说说吧。我在做iPhone的研发之前,也做过一些其他平台的研发,因此虽然每天都有各种各样的报怨,但感觉上苹果的平台还是很不错的。我觉得如果是一个开发新手来接触这个平台,应该可以建立一些比较好的习惯吧。虽然很多iPhone SDK的概念在最初接触时,可能会感觉不是很清楚,不过别着急慢慢来,其实它们背后的很多设计理念和想法还是很不错的!再说,开发完了有人帮我们卖,自己玩得开心还可能有钱赚。

上一篇:不死之躯 多系统程序练就分身之术 下一篇:牛年我有百宝箱 宝贝工具一箩筐