iPhone开发入门

红薯 发布于 2010/04/15 14:50
阅读 11K+
收藏 22

首先我们得成为注册ADC会员,这个是免费的,并且可以获得很多开发资料。
http://developer.apple.com/iphone/program/start/register/
上面是注册地址

iPhone 开发环境介绍
目前给iPhone开发的时候,操作系统可以分两种,一种是linux(比如Fedora、Ubuntu),另外一种则是mac os x环境下面。由于linux下面开发要破解iPhone,而且还没有非常强悍的开发工具,所以我们不会介绍linux下如何开发iPhone应用。
在mac os x环境下面,只要你注册成为ADC会员,则可以下载到iPhone的SDK(这个的SDK不像java的SDK),里面是一个完整的iPhone开发环 境,从代码编写、UI设计到编译、调试、打包管理等等,非常强悍。所以这个SDK比较大,有2个G。在这个SDK中,首先我们用到的是xCode、 Interface Builder以及iPhone模拟器。
xCode是主要负责代码的编写、编译、debug、发布等,当然还有类相关的文档。
Interface Builder则集中在界面的编写,同时支持HIG(Apple Human Interface Guidelines,指导开发人员如何设计用户界面),但是在这个工具中,我们是不能写一行代码的,Interface Builder会帮我们创建相应的Objective-C对象(这是mac平台的一种开发语言),然后将这些对象序列化到xib文件中。
iPhone模拟器就不用多说了,可以方便的查看自己编写的应用如何。

下面是xCode与Interface Builder的图标

开发语言介绍
第一种是Objective-C编程语言,在iPhone中就是Cocoa touch,一般应用的话,都会用到,所以是不能或缺的。
第二种是Quartz 2D,这个主要用来绘图的,Quartz是一组函数、数据类型以及对象,专门设计用于直接在内存中对视图或图像进行绘制。
第三种是OpenGL ES,虽然也是用来绘图的,但是和Quartz不一样,OpenGL是以状态机的形式实现的。而OpenGL ES则是OpenGL的一个子集,专门用于嵌入式系统的,目前iPhone OS 3.0以下的只支持OpenGL ES 1.*的实现,而3.0则支持OpenGL ES 2.0的实现。
在开发过程中,最好不要把Quartz 2D与OpenGL ES一起使用,毕竟iPhone的性能比不上桌面环境,这个也是Apple官方建议的。

开发环境搭建
在mac os x平台下面,开发环境的搭建很简单。
首先确保mac os x的系统版本在10.5.5或以上,然后下载iphone SDK,现在可以下载到iphone os 3.0的SKD。
下载完以后安装,按照提示做就可以了,很简单。
安装完以后,环境就搭建好了。

写一个简单的demo
这次先写一个简单的demo,在iPhone屏幕上显示2个按钮,当点击按钮的时候,改变iPhone屏幕的颜色。虽然demo很简单,但是能让我们理解 iPhone的一种开发模式。
先打开xCode,新建一个View-Based Application项目。如下图:

加一个小小的说明,所有的iPhone应用只有一个window对象(窗口对象),在window对象中,可以添加View对象(视图对象),我们 平常见到的按钮、输入框、标签等,都是继承自View对象的。

项目打开以后,目录结构如下图:

点击 Bulid and Go , 会出现如下图:

由于现在我们什么都没有做,自然iPhone应用里面什么都没有。

再到Classes目录下面去看看,打开看一下,实际上h结尾的是头文件,而m结尾的是实现文件,这点很像c、c++。但是又有些不一样,比如 @property这个标签,通过标签我们可以不用写setter和getter方法。 这些都是Objective-C 2.0的特性,不过注意一点,在iPhone OS中目前还不支持垃圾回收。

仔细看看这些文件,我们会发现一组是项目名称后面加上了AppDelegate,一组是项目名称后面加上了 ViewController,这是xCode的“潜规则”。这次先不说AppDelegate应用程序代理,先说ViewController,这个是 什么意思呢?这个是MVC模式中的C,而MVC模式中的V,则是Interface Builder的xib文件。

那么先来修改界面吧,在这次的demo里面,在Resources目录下面,会有两个xib文件,一个是 MainWindow.xib,这个是应用程序在启动时默认加载的,可以在Info.plist文件里面修改启动加载的xib文件;另外一个是项目名称 + ViewController.xib,双击打开这个xib,这时会启动Interface Builder,打开一看就知道是一个所见即所得的环境。如 下图:

现在来加两个按钮吧。

从Library窗口中拖两个button到View窗口中,这表明将会有两个按钮出现在视图中,顺便加上按钮标签, 在拖动按钮的时候会有蓝色的虚线出现,这些虚线是符合HIG的,尽量跟这它来吧。如下图:

此时回到xCode,Build and Go,现在应用里面多了两个按钮了,所以就这么简单,开发不是很麻烦。如下图:

接下来就要改controller了,打开CT_oneViewController.h这个文件(demo项目叫 CT_one),刚刚我们在Interface Builder中加的两个按钮,怎么让controller知道已经有两个按钮了呢?所以要用到关键字IBOutlet,这个关键字表示变量将会连接到 xib文件中的对象实例。

所以先声明2个IBOutlet对象,如下图:

然后是把Interface Builder中的按钮和Controller中的按钮变量连接起来,回到Interface Builder中,右键按住File’s Owner,移动鼠标到View窗口,放开鼠标以后会出现Outlets的选择,由于CT_oneViewController是这个View的所有者, 所以CT_oneViewController.h得与CT_oneViewController.xib中的view对应。

右键File’s Owner,出现如下图:

可以看到刚才声明的两个按钮变量了,通过右边的原点,把变量与View窗口中的变量连接起来。

就这样,代码里面的变量就是UI层面的按钮了。

接下来就要做事件的处理了,用xCode与Interface Builder开发,事件处理很有意思。

既然要使背景颜色改变,所以还是得写几行代码的,首先在CT_oneViewController.h中声明两个方法:

-(IBAction) clickLeftButton:(id)sender;

-(IBAction) clickRightButton:(id)sender;

在CT_oneViewController.m中实现上面的两个方法:

-(IBAction) clickLeftButton:(id) sender {

self.view.backgroundColor = [UIColor blueColor];

}

-(IBAction) clickRightButton:(id) sender {

self.view.backgroundColor = [UIColor redColor];

}

方法已经准备好了,剩下的就是把按钮的事件和方法连接起来就可以了。

右键左边的按钮,出现如下图:

可以看到很多事件,我们只对点击感兴趣(在iPhone中是手指轻抚屏幕),所以只要把Touch Up Inside连接到controller的方法就可以了,操作就是右击右边的小圆圈,移动到File’s Owner上面,出现选择如下图:

这不就是我们刚才编写的方法的,该连的连上。右边的按钮也是如此。

回到xCode,Build and Go。点击按钮,效果如下:

这次就到这里吧, thanks.

加载中
0
c
choosachi

Really Great!

Thanks

sachi.choo@gmail.com

actually i m running a publishing company, esp chinese book,

we base in KL, Malaysia. hope we can corporate in the future

0
Sephiroth
Sephiroth

一直纠结于Android和IPhone应用产品的飘过...

0
二毛
二毛

你好。

我是iPhone爱好者。虽然没有编程经验,但是很想开发出自制的游戏和软件。打算在近期内买一台Mac。希望可以保持联系。

QQ:56853239

MSN:wwdenny@msn.com

by 二毛

0
SEAN
SEAN

买不起,凑热闹

0
刘冲
刘冲

引用来自#3楼“Sephiroth”的帖子

一直纠结于Android和IPhone应用产品的飘过...

一直不纠结,好讨厌苹果,说不上来原因.

0
冯琴
冯琴

我们一直在招Iphone开发的兼职和全职人员,合适的话,项目外包都可以

910012762

0
k
koio1018

怎么不用j2me

0
0
xyl
xyl

我也在开发Iphone 上面的程序

0
郭锅

不知道可以在win7上用VM虚拟机装mac os可以不咯

返回顶部
顶部