iPhone开发基础教程笔记(一)--第一章和第二章-创建基本项目程

来源:互联网 发布:淘宝一元云购在哪里 编辑:程序博客网 时间:2024/06/02 21:01

iPhone开发基础教程      

原名:Beginning iPhone Development:Exploring the iPhone SDK
[美]Dave Mark、Jeff LaMarche 著
人民邮电出版社

第一章 欢迎来到iPhone的世界
1.1 关于本书
我们的目标是让你通过初步学习,理解iPhone应用程序的运行方式和构建方式。

1.2 必要条件
需要一台Leopard(OS X 10.5.3或更高版本)的基于Intel的Macintosh计算机。2006年之后上市的任何Macintosh计算机应该都符合要求。
无需顶级配置,但是你可能需要扩充下内存。
你还需要注册称为iPhone开发人员。只有完成了这一步,苹果公司才允许下载iPhone SDK(软件开发工具包)。
要进行注册,请访问
http://developer.apple.com/iphone/ (中文网站为 http://www.apple.com.cn/developer/iPhone/ )
页面中提供了最小且功能最强大的iPhone SDK的下载链接。
最简单(而且免费)的选项是单击Download the Free SDK按钮。输入Apple ID之后,就可以下载SDK,还有各类文档、视频和示例代码等的链接。

iPhone SDK中包含的一个最重要的元素是Xcode,他是苹果公司的IDE。
这个免费的SDK还包含一个仿真器,他支持在Mac上运行大多数iPhone程序。但是,免费选项不支持将应用程序下载到实际的iPhone中。此外,他也不支持在苹果公司的iPhone App Store上分发应用程序。要实现这些功能,需要使用另外两个下载选项,他们不是免费的。

说明:仿真器不支持依赖于硬件的特性。比如iPhone的加速计或摄像功能。要支持这些特性,需要使用其他选项。

标准版程序的价格为99美元。他提供了全面的开发工具、资源和技术支持,支持通过苹果公司的App Store分发应用程序,并且最重要的是,支持在iPhone上(而不是只在仿真器上)测试和调试代码。
企业版程序的价格为299美元,可供企业开发专用的、内部的iPhone和iPod Touch应用程序。
有关这两种程序的详细信息,请访问http://developer.apple.com/iphone/program/。
由于iPhone是一种始终联网的移动设备,并且使用的是其他公司的无线基础设施,因此苹果公司对iPhone开发人员的限制比对Mac开发人员多得多,Mac开发人员无需经过苹果公司的审查或批准就能够编写和分发程序。
苹果公司添加这些限制,更多的是为了尽量避免分发恶意或效率低下的程序,因为这类程序可能降低共享网络的性能。
另外,很明显,你还需要一部iPhone。

说明:如果要注册标准版或企业版程序,你应该立即注册。批准过程可能需要一些时间,并且通过批准之后才能在iPhone或iPod Touch上运行应用程序。

1.3 必备知识
熟悉Obj-C语言。SDK中的Cocoa Touch是本书使用的主要工具,他使用的是Obj-C 2.0编程语言,但是如果不了解Obj-C语言的新增特性也没有关系。
你还应该熟悉iPhone本身。就像在任何其他平台中编写应用程序一样,你需要熟悉iPhone的各种特性,并了解iPhone界面以及iPhone程序的外观。

1.4 编写iPhone应用程序有何不同?
需要谨记iPhone开发与桌面应用程序开发之间的重要差异

1.4.1 只有一个正在运行的应用程序
若你的应用程序不是用户正在交互中的,那么他不会起作用。

1.4.2 只有一个窗口

1.4.3 受限访问
你只能在iPhone为应用程序创建的文件系统中读写文件。此区域称为应用程序的沙盒,应用程序在其中存储文档、首选项等需要存储的数据
应用程序还存在其他方面的限制。例如,你不能访问iPhone上端口号较小的网络端口,或者执行台式计算机需要根用户或管理员权限才能执行的操作

1.4.4 有限的响应时间
启动应用程序后,载入首选项和数据,要尽快在屏幕上显示主视图。只要应用程序在运行,就可以从其下发拖出一个菜单条。如果用户按主页按钮,iPhone就会返回主页,并且用户需要快速保存一切内容并退出。如果未在5s之内保存并放弃控制,则应用程序进程将被终止,无论用户是否已经完成保存。

1.4.5 有限的屏幕大小

1.4.6 有限的系统资源
Cocoa Touch提供了一种内置机制,可以将内存不足的情况通知给应用程序。出现这种情况时,应用程序必须释放不需要的内存,甚至可能被强制退出。

1.4.7 缺少Cocoa工具
iPhone不支持Core Data或Cocoa Binding。我们之前曾说过,Cocoa Touch使用的是Obj-C 2.0,但该语言中的一个关键特性在iPhone中并不可用:Cocoa Touch不支持垃圾回收。

1.4.8 新属性
但iPhone SDK中也有一些新功能是Cocoa中所没有的,或者至少不是在任何Mac上都是可用的。iPhone SDK为应用程序提供了一种定位方法,即使用Core Location确定电话的当前地理坐标。iPhone还提供了一个内置的摄像和照片库,并且SDK允许应用程序访问这两者。iPhone还提供了一个内置的加速计,用用户检测iPhone的持有和移动方式。

1.4.9 与众不同的方法

1.5 本书内容

1.6 准备开始吧!



第二章 创建基本项目
2.1 在Xcode中设置项目
现在,你应该已经在机器上安装了Xcode和iPhone SDK。
打开Xcode,如果第一次启动Xcode时机器上连接有iPhone或iPod Touch,那么程序会询问你是否要使用该设备进行开发。此时,单击Ignore按钮,如果选择加入付费的iPhone Developer Program,那么将能够访问程序门户,了解如何使用iPhone或iPod Touch进行开发和测试。

创建一个新项目。选择iPhone下的Application。右侧会显示可用作iPhone应用程序起始点的单独“项目模版”。标为View-Based Application的图标是最简单的模版,我们使用它。
选择模版之后,需要使用标准保存表保存新项目。键入Hello World做为项目名称,选择位置。

左侧的项目下有5个子文件夹:Classes、Other Sources、Resources、Frameworks和Products。
1)Classes:包括所有的Obj-C类。可以在Classes文件夹下创建一些子文件夹来组织代码。
2)Other Sources:包含除Obj-C类之外的源代码文件。创建新iPhone应用程序之后,此文件夹包含下面两个文件:
 a)Hello World_Prefix.pch:扩展名.pch表示“预编译的头文件(precompiled header)”。这是项目所使用的来自外部框架的一组头文件。Xcode将预编译包含在此文件中的头文件,这会减少使用Build或Build and Go选项编译项目所需的时间。暂时不必担心此文件,因为其中已经包含了最常用的头文件
 b)main.m:此文件包含应用程序的main()方法。通常不需要编辑或修改此文件。
3)Resources:包含应用程序中的非代码文件。其中包括图标和其他图像、声音文件、影片文件、文本文件和程序运行所需的属性列表等。由于应用程序在自己的沙盒中运行,因此需要将任何所需的文件保存在此处。这是因为你不能访问位于iPhone上其他地方的文件,除非通过受支持的API,如可以访问iPhone的相片库和地址薄的API。此文件夹应包含下面3项:
 a)Hello_WorldViewControoler.xib:此文件包含程序Interface Builder 所使用的信息。
 b)Info.plist:包含应用程序相关信息的属性列表。
 c)MainWindow.xib:应用程序的主Interface Builder(或nib)文件。在简单的应用程序中,通常不需要接触此文件。
4)Frameworks:是一种特殊的库,其中可以包含代码、图像和声音文件等资源。在此文件夹中添加的任何框架或库都将链接到应用程序中,并且代码将能够使用包含在该框架或库中的对象、函数和资源。项目中默认链接了最常用的框架和库,因此在大多数情况下,我们不需要操作此文件夹。但是,项目默认未包含较少使用的库和框架。
5)Products:包含此项目在编译时生成的应用程序。展开Products,可以看到一个名称为Hello World.app的项。他是这个特定项目创建的应用程序。Hello World.app是项目的唯一产品。现在的Hello World.app显示为红色,这表示无法找到该文件,因为我们还没有编译项目!

说明:项目的Groups & Files窗格中的这些文字不一定与Mac文件系统上的文件夹相对应。Xcode已对他们进行了逻辑分组,以保持一切内容井然有序,便于用户在开发应用程序时更加快速地找到所需的内容。打开项目的文件夹,可以看到其中包含一个Classes文件夹,但是却没有Other Sources和Resources文件夹。通常,包含在这两个文件夹中的内容都保存在项目的根目录中,但是也可以将他们保存在任何位置,甚至位于项目文件夹的外部。Xcode内部的层次结构与文件系统的层次结构完全无关。举例来说,在Xcode中移出Classes文件夹中的文件不会更改该文件在硬盘上的位置。

2.2 Interface Builder 简介
展开Resources组,双击Hello_WorldViewController.xib文件。
标为Hello_WorldViewController.xib的窗口是nib的主窗口。对于此特定的nib文件,该窗口是开发的主窗口和起始点,除了前两个图标(Files's Owner和First Responder)之外,该窗口中的任何图标都表示Obj-C类的一个实例,他们将在加载nib文件时自动创建。
想创建一个按钮实例吗?当然,可以通过编写代码来创建。但是,更加常用的方法是使用IB创建按钮并指定其属性。
Hello_WorldViewController.xib文件将在应用程序启动时自动加载,因此他非常适合用于保存构成用户界面的对象。
例如,要在应用程序中添加一个按钮,需要实例化一个UIButton类型的对象。可以通过键入以下代码来实现:
UIButton *myButton=[[UIButton alloc] initWithFrame:aRect];
在IB中,你可以通过从界面对象组件面板中将一个按钮拖放到应用程序的主程序中来完成此操作。

2.2.1 nib文件的构成
Files's Owner 是所有nib文件中的第一个图标,他表示从磁盘加载nib文件的对象。换言之,Files's Owner是“拥有”此nib文件副本的对象。
First Responder 就是用户当前正在与之交互的对象。例如,如果用户当前正在文本字段中输入数据,则该字段就是当前的First Responder。First Responder将随着用户与界面的交互而变化,并且First Responder图标可以方便开发人员操作当前做为First Responder的控件或视图,而不需要编写代码来确定这些控件和视图。
本示例中的第三个图标为View,View图标表示UIView类的一个实例。UIView对象是用户可以看到并能与之交互的区域。在此应用程序中,我们只拥有一个视图,因此该图标表示用户可以在应用程序中看到的所有内容。

说明:从技术上说,我们的应用程序拥有的视图不止一个。可以在屏幕上显示的所有用户界面元素,包括按钮、文本字段和标签,都是UIView的子类。但是,当你在本书中看到术语“视图”时,我们通常指的是UIView的实际实例,而此应用程序仅有一个UIView的实例。

除了主窗口之外,还有两个窗口。查看标题为View的窗口。该窗口是nib主窗口中的第三个图标的图形表示。该窗口用于图形化设计用户界面。

2.2.2 在视图中添加标签
最右侧的窗口是Library窗口,其中包含IB支持的所有常备的Cocoa Touch对象。从库中拖一个项方到nib文件窗口中,应用程序将添加该类的一个实例。关闭库窗口之后,可以从Tools菜单中选择Library重新调出该窗口。此组件面板上的项主要来自iPhone UIKit,后者是用于创建应用程序用户界面的对象框架。
UIKit在Cocoa Touch中的作用与AppKit在Cocoa中的作用相同。这两种框架在概念上是类似的,但由于平台之间的差异,他们之间存在很多明显的不同。另一方面,一些Foundation框架类,如NSString和NSArray 是Cocoa和Cocoa Touch所共有的。
浏览Library组件面板中的对象列表,找到Label组件,由于用户界面对象具有层次结构,因此,我们将标签做为“子视图”添加到主视图(View视图)中。IB非常智能,如果某个对象不接受子视图,则不能将其他对象拖放到其上。
从库中将一个标签拖到View视图中,将会添加一个UILabel实例做为应用程序主视图的子视图。
双击刚才创建的标签并键入文本“Hello World!”然后,将标签移动到屏幕上的合适位置。
大功告成!保存!File>Save
在Xcode中,从Build菜单中选择Build and Run(或按下Cmd+R)。Xcode将编译应用程序并在iPhone仿真器中启动他。
欣赏完自己的作品之后,确保退出仿真器。Xcode、IB和仿真器都是单独的应用程序。
如果想编辑文本的大小和颜色,选中标签,按Cmd+1或从Tools菜单中选择Inspector。这将调出Inspector窗口,在该窗口中,你可以设置当前选中项的属性。

注意:如果在构建和运行应用程序时,iPhone已经连接到Mac,则可能会不太顺利。总地来说,要在iPhone上构建和运行你的应用程序,需要注册苹果公司的iPhone开发人员计划并支付一定的费用,然后才能适当配置Xcode。加入该计划之后,苹果公司将向你发送完成配置所需的信息。同时,本书中的大多数程序都可以通过iPhone仿真器正确运行。如果已经连接了iPhone,在选择Build and Run之前,需先从Project菜单中依次选择Set Active SDK和Simulator--iPhone OS 2.0。

2.3 iPhone美化
现在在iPhone仿真器上的Hello World程序的图标是空白的。要解决这个问题,需要创建一个图标,并将它保存为一个可移植网络图形(.png)文件。他的大小必须是57*57像素。不要尝试与电话上已有按钮的样式相匹配,iPhone将自动圆角化边缘并让他具有玻璃质感。只需要创建一个普通的方形图像。我们在项目归档文件中提供了一个图标文件,可以直接使用他。

说明:需要使用.png图像做为图标。实际上,添加到iPhone项目中的图像都应该使用此格式。虽然大多数常见图像格式都可以正确显示,但是,除非有不可抗拒的原因,否则都应该使用.png文件。Xcode在构建应用程序时会自动优化.png图像,让他们称为iPhone应用程序中最快速和最有效的图像类型。

设计好应用程序图标之后,将.png文件从Finder中拖放到Xcode的Resources文件夹中。或者,选择Xcode中的Resources文件夹,从Project菜单中选择Add to Project...,,然后导航到你的图标图像文件。

完成上述操作之后,Xcode将提示你输入一些具体信息。可以选择让Xcode将文件复制到项目目录中,也可以将它作为原文件的引用添加到项目中。通常,较好的选择是将资源复制到Xcode项目中,除非该文件需要与其他项目共享。

在项目中添加某个常用文件之后,Xcode就会自动知道如何处理他们。结果,该图像文件将自动编译到应用程序中,而不需要任何其他操作。
现在,我们已经将icon.png图像并入到项目中,其结果是该图像将构建到应用程序的程序包中。接下来,我们需要指定使用此图像做为应用程序的图标。
在Groups&Files窗格中,展开Resources文件夹,然后单击Info.plist文件。他是一个“属性列表文件”,其中包含关于应用程序的一些光贵信息,如图标文件的名称等。
选择Info.plist之后,属性列表将出现在正在编辑的窗格中。在属性列表中,从左列中找到标为Icon file的行。该行右边的列应该为空。双击该空白单元格,键入刚才添加到项目中的.png文件的名称。

准备编译和运行
在编译和运行之前,先来看看Info.plist中的其他行。虽然大多数设置保留默认即可,但是需要注意一个特定的设置,即束标识符(bundle identifier)。这是应用程序的唯一标识符,并且始终需要设置。如果要在iPhone仿真器上运行应用程序,则束标识符的标准命名约定的格式为:顶级Internet域(如com或org)之后是点号,然后是公司或组织名称,接着是点号,最后是应用程序的名称。如果要在实际的iPhone上运行应用程序,则创建应用程序的束标识符是一个较为复杂的过程。目前,我们将束标识符修改为com.apress.HelloWorld。
完成更改之后,编译并运行应用程序。启动仿真器之后,按白色方块按钮返回主屏幕,可以看到漂亮的新图标。

说明:如果要从iPhone仿真器的主屏幕中清除早期的应用程序,可以从主目录的Library文件夹的Application Support文件夹中删除iPhone Simulator文件夹。

原创粉丝点击