Phone 开发基础教程之


在开始编写iPhone 软件之前,需要做一些准备工作。对于初学者,需要一台运行 Leopard(OS X 10.5.3或更高版本)的基于Intel的Macintosh计算机。2006年之后上市的任何Macintosh计算机(不管是笔记本还是台式机)应该都符合要求。

  无需使用具备顶级配置的计算机,MacBook或Mac Mini就能够出色地完成任务。但是,对于较早且运行速度较慢的计算机型号,进行RAM升级能够获得较大的性能提升。

  你还需要注册成为iPhone开发人员。只有完成了这一步,苹果公司才允许下载iPhone SDK(软件开发工具包)。

  要进行注册,请访问http://developer.apple.com/iphone/(中文网站为 http://www.apple.com.cn/ developer/iPhone/,如图所示),该页面应该与图中显示的页面类似。页面中提供了最新且功能最强大的iPhone SDK的下载链接。单击该链接将进入包含3个选项的注册页面。

  最简单(而且免费)的选项是单击Download the Free SDK按钮。页面将提示输入Apple ID。使用你的Apple ID登录。如果还没有Apple ID,请单击Create Apple ID按钮,创建一个Apple ID,然后再登录。登录之后,将进入iPhone开发主页面。其中不仅有SDK的下载链接,还提供了各类文档、视频和示例代码等的链接,所有这些资源都能 帮你进行iPhone应用程序开发。

  

ios 应用程序开发教程pdf 苹果软件开发教程_cocoa

  iPhone SDK中包含的一个最重要的元素是Xcode,它是苹果公司的IDE(集成开发环境)。Xcode提供了各种实用工具,用于创建和调试源代码,编译应用程序以及调优应用程序性能。学习完本书,你将会迷恋上Xcode!

  这个免费的SDK还包含一个仿真器,它支持在Mac上运行大多数iPhone程序。这对于学习如何编写iPhone程序极其有用。但是,免费选 项不支持将应用程序下载到实际的iPhone(或iPod Touch)中。此外,它也不支持在苹果公司的iPhone App Store上分发应用程序。要实现这些功能,需要使用另外两个下载选项,它们不是免费的。

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

  标准版程序的价格为99美元。它提供了全面的开发工具、资源和技术支持,支持通过苹果公司的App Store分发应用程序,并且最重要的是,支持在iPhone上(而不只是在仿真器上)测试和调试代码。

  企业版程序的价格为299美元,可供企业开发专用的、内部的iPhone和iPod Touch应用程序。

  有关这两种程序的详细信息,请访问http://developer.apple.com/iphone/program/。

  由于iPhone是一种始终连网的移动设备,并且使用的是其他公司的无线基础设施,因此苹果公司对iPhone开发人员的限制比对Mac开发人员多得多,Mac开发人员无需经过苹果公司的审查或批准就能够编写和分发程序。

  苹果公司添加这些限制,更多的是为了尽量避免分发恶意或效率低下的程序,因为这类程序可能降低共享网络的性能。开发iPhone应用程序似乎麻 烦不少,但苹果公司在简化开发过程方面付出了巨大努力。还应该提及的是,99美元的价格比微软公司的软件开发IDE ——Visual Studio的价格低得多。

  另外,很明显,你还需要一部iPhone。虽然大部分代码都可以通过iPhone仿真器进行测试,但并非所有程序都是如此。一些应用程序需要在实际的iPhone上进行全面测试,然后才能分发给公众。

  说明 如果要注册标准版或企业版程序,你应该立即注册。批准过程可能需要一些时间,并且通过批准之后才能在iPhone或iPod Touch上运行应用程序。但是不必担心,前几章中的所有项目以及本书中的大多数应用程序,都可以在iPhone仿真器上运行。

  学习本文应该具备一定的编程知识。你应该理解面向对象编程的基础知识,例如,了解对象、循环和变量的含义,还应该熟悉Objective-C编 程语言。 SDK中的Cocoa Touch是本书使用的主要工具,它使用的是Objective-C 2.0编程语言,但是如果不了解Objective-C语言的新增特性也没有关系。我们将重点介绍要使用的2.0语言特性,并解释其工作原理和使用它的原 因。

  你还应该熟悉iPhone本身。就像在任何其他平台中编写应用程序一样,你需要熟悉iPhone的各种特性,并了解iPhone界面以及iPhone程序的外观。

  还不熟悉Objective-C?

  如果你从未使用Objective-C编写过程序,那么以下资源有助于你了解该语言。

        请参看iPhone开发资料之Objective-C语言简介:http://tech.it168.com/a2009/0505/274/000000274996.shtml   

  或者,阅读由Mac编程专家Mark Dalrymple和Scott Knaster撰写的Learn Objective-C on the Mac一书,该书浅显易懂,是学习Objective-C基础知识的优秀图书:

  http://www.apress.com/book/view/9781430218159

  接下来,访问Apple iPhone开发中心网站并下载The Objective-C 2.0 Programming Language一书的电子版,该书深入浅出地介绍了Objective-C 2.0的方方面面,是一本优秀的参考指南:

  http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/ObjectiveC

  注意,需要登录才能访问此文档。

  编写iPhone应用程序有何不同

  如果从未使用过Cocoa或它的前期产品NextSTEP,那么你可能会发现Cocoa Touch(用于编写iPhone应用程序的应用程序框架)稍显另类。它与其他常用应用程序框架(如用于构建.NET或Java应用程序的框架)之间存在 一些基本差异。你起初可能会有点不知所措,但不必担心,只要勤加练习,就可以掌握其中的规律。

  如果你具备使用Cocoa或NextSTEP编程的经验,则会发现iPhone SDK中有许多熟悉的身影。其中的许多类都是从用于Mac OS X开发的程序版本中原样借鉴过来的,一些类即便存在不同,它们也遵循相同的基本原则,并使用类似的设计模式。

  无论你的知识背景如何,都需要谨记iPhone开发与桌面应用程序开发之间的重要差异。

  只有一个正在运行的应用程序

  除了操作系统之外,任何时候iPhone上都只能运行一个应用程序。随着iPhone内存的增大、处理器的增强,这一点在未来可能会发生变化。但是在目前,在执行代码时,你的应用程序将是唯一正在运行的程序。若你的应用程序不是用户正在交互中的,那么它不会起作用。

  只有一个窗口

  在桌面及笔记本操作系统中,多个程序可以同时运行,并且可以分别创建和控制多个窗口。而iPhone则有所不同,它只允许应用程序操作一个“窗口”。应用程序与用户的所有交互都在这个窗口中完成,而且这个窗口大小就是iPhone屏幕的大小,是固定的。

  受限访问

  计算机上的程序可以访问启动它们的用户能够访问的任何内容,而iPhone则严格限制了应用程序的权限。你只能在iPhone为应用程序创建的文件系统中读写文件。此区域称为应用程序的沙盒,应用程序在其中存储文档、首选项等需要存储的数据。

  应用程序还存在其他方面的限制。举例来说,你不能访问iPhone上端口号较小的网络端口,或者执行台式计算机中需要根用户或管理员权限才能执行的操作。

  有限的响应时间

  由于其使用方式特殊,iPhone及其应用程序需要具备较快的响应时间。启动应用程序之后,需要打开应用程序,载入首选项和数据,并尽快在屏幕 上显示主视图,这一切要在几秒之内发生。只要应用程序在运行,就可以从其下方拖出一个菜单条。如果用户按主页(home)按钮,iPhone就会返回主 页,并且用户需要快速保存一切内容并退出。如果未在5秒之内保存并放弃控制,则应用程序进程将被终止,无论用户是否已经完成保存。

  因此,你在设计iPhone应用程序时需要注意这一点,以确保用户退出时不会丢失数据。

  有限的屏幕大小

  iPhone的屏幕显示效果非常出色,从它推出直到现在,它一直是消费者设备上分辨率最高的屏幕。但是,iPhone的显示屏幕并不大,你施展 的空间要比现代计算机小很多,仅有480×320像素。而在撰写本书时,苹果公司最便宜的iMac支持 1680×1050像素,最便宜的笔记本电脑MacBook支持1280×800像素。而苹果公司最大的显示器,30英寸的Cinema Display,支持2560×1600像素。

  有限的系统资源

  阅读本书的任何资深程序员可能都会对128 MB内存、4 GB存储空间的机器嗤之以鼻,因为其资源实在是非常有限,但这种机器却是真实存在的。或许,开发iPhone应用程序与在内存为48 KB的机器上编写复杂的电子表格应用程序不属于同一级别,二者之间没有可比性,但由于iPhone的图形属性和它的功能,所以其内存不足是非常容易出现 的。目前上市的iPhone具备128 MB物理内存,当然这还会随时间不断增长。内存的一部分用于屏幕缓冲和其他一些系统进程。通常,大约一半内存将留给应用程序使用。

  虽然64 MB对于这样的小型计算机可能已经足够了,但谈到iPhone的内存时还有另一个因素需要考虑:现代计算机操作系统,如Mac OS X,会将一部分未使用的内存块写到磁盘的交换文件中。这样,当应用程序请求的内存超过计算机实际可用的内存时,它仍然可以运行。但是,iPhone OS并不会将易失性内存(如应用程序数据)写到交换文件中。因此,应用程序可用的内存量将受到电话中未使用物理内存量的限制。

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

  缺少Cocoa工具

  如果你在接触iPhone之前有过Cocoa方面的经验,那么你过去习惯使用的一些工具在iPhone中已经不可用了。iPhone SDK不支持Core Data或Binding。我们之前已经说过,Touch使用的是Objective-C 2.0,但该语言中的一个关键特性在iPhone中并不可用:Touch不支持垃圾收集。

  新属性

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

  与众不同的方法

  iPhone没有键盘和鼠标,这意味着它与用户的交互方式与通用的计算机截然不同。所幸的是,大多数交互都不需要你来处理。举例来说,如果在应用程序中添加一个文本字段,则iPhone知道在用户单击该字段时调用键盘,而不需要编写任何额外的代码。

  准备开始吧

  iPhone是一款全新的、令人难以置信的计算平台,是轻松开发的利器。编写iPhone应用程序将成为一种全新的体验,这种体验与之前你使用 过的任何平台都不同。所有看似熟悉的功能都具有其独特的一面,但随着深入体会本书中的代码,你将能把这些概念紧密联系起来并融会贯通。

  应该谨记,本书中的练习并不是一份检验清单,似乎完成这些练习之后,你就自动具有了iPhone开发专家的资格。在继续下一个项目之前,确保已经理解了这些概念和原理。不要害怕修改代码。多多尝试并观察结果是在Touch环境中克服编码困难的最佳方法。

  如果你已经安装了iPhone SDK,请继续阅读此系列文章。如果还没有,请立即安装iPhone SDK。然后开始iPhone之旅!