iPhone和iPod touch为我们提供了创新性的移动平台,为这个平台编程可谓其乐无穷。它们是苹果公司手持式计算设备家族的第一批成员。尽管体型偏小,但它们运行的是最先进的OS X,并且具备内容丰富、种类繁多的SDK,通过它们你可以设计和实现各种应用程序。借助苹果公司的集成设计环境Xcode,你可... 查看全部[ 本章介绍 ]
准备好开始iPhone编程了吗?准备看看这究竟是怎么回事了吗?苹果公司的iPhone开发人员计划的成员可直接使用苹果公司的iPhoneSDK(Software Development Kit,软件开发包)。苹果公司的iPhone开发人员计划一共有4个。这些计划包括免费在线计划、针对内部开发的有偿企业... 查看全部[ 1.1 iPhone开发人员计划 ]
无论你申请哪种计划,都必须有一台基于Intel的Mac机,该机应该运行最新版本的Mac OS X。另外,建议至少有一台,最好是多台iPhone和iPod touch,以便进行测试,确保应用程序在每种平台上都能正确运行,包括一些旧的装置,例如第一代iPhone和iPod touch。 申请付费计划时... 查看全部[ 1.2 开始 ]
说到应用程序开发,很多iPhone应用程序从来不用考虑它们将在什么平台上运行。大多数程序只依赖于显示屏和触摸输入。你大可放心地将它们部署到目前所有的iPhone家族设备上,无需进行特别的编程,也不必关心它们在哪种平台上运行。 然而,实际平台之间仍存在差异。这些差异非常重要,并且值得注意。在决定如何... 查看全部[ 1.3 理解型号差异 ]
在讨论iPhone之类的移动平台时,人们会非常关心存储、交互限制和电池寿命之类的问题。移动平台不能提供与桌面系统相同的磁盘空间。存储限制只是一个方面,界面和电量消耗也受到一定限制,所有这些严重制约了开发人员的能力。 使用iPhone,不能对大屏幕、鼠标、物理键盘,甚至物理常开A/C电源进行设计。但... 查看全部[ 1.4 平台限制 ]
你可能已经预料到,构建iPhone应用程序与构建Macintosh应用程序类似,两个平台都运行OS X。需要使用Objective-C 2.0开发代码。通过链接到一个框架分类进行编译。换句话说,iPhone SDK是受限的。下面是需要记住的一些要点。 ·垃圾收集是MIA并且可能始终如此。在iPho... 查看全部[ 1.5 SDK限制 ]
iPhone开发人员计划门户包含为iPhone开发设置系统所需的所有工具。它的网址是http://developer. apple.com/iphone/manage/overview/index.action,但是,除非你已经注册了两种付费iPhone开发人员计划之一,否则无法访问它。在这里,可以... 查看全部[ 1.6 使用开发人员门户 ]
iPhone Xcode项目包含各种不同的标准和自定义组件。图1-2显示了一个最简单的项目。项目元素包括源代码、链接框架和媒体(如图像和音频文件)。Xcode编译源代码,将其链接到框架,然后构建适合iPhone安装的应用程序束。它将媒体添加到此应用程序束中,支持程序在iPhone上运行时访问这些媒体... 查看全部[ 1.7 组建iPhone项目 ]
编译后的iPhone应用程序以应用程序束的形式存在。和Macintosh类似,这些应用程序束就是采用.app扩展名的文件夹。程序的内容和资源位于此文件夹中,包括编译后的可执行文件、支持媒体(如图像和音频)和一些向OS描述应用程序的特殊文件。操作系统将文件夹视为一个应用程序束。 1.8.1 应用程序... 查看全部[ 1.8 iPhone应用程序组件 ]
iPhone编程中心采用两种重要的范例:面向对象编程和模型—视图—控制器(MVC)设计模式。iPhone SDK在设计时考虑了在开发人员构建的程序中支持这些概念。为此,它引入了委托(控制器)、数据源方法(模型)和定制的视图类(视图)。下面简要介绍本书所使用的一些重要的iPhone/Cocoa Tou... 查看全部[ 1.9 编程范例 ]
本章介绍了iPhone SDK、开发人员门户以及iPhone应用程序。你看到了如何选择开发人员计划,以及如何创建配置。本章探讨了典型的iPhone应用程序,从项目和源文件到应用程序产品,并介绍了影响开发的设计方面的限制。下面是本章的一些要点。 ·大多数开发人员最后都选择99美元/年的标准iPhon... 查看全部[ 1.10 小结 ]
Xcode和Interface Builder可以帮助你创建iPhone SDK的应用程序。本章介绍在项目中使用这些工具的基础知识。你将看到如何构建一个简单的Hello World项目,编译它并在模拟器中测试它,然后学习如何针对设备编译它,并将它部署到设备。你还将发现一些基本的调试工具,学习它们的用... 查看全部[ 本章介绍 ]
冒然涉足SDK编程似乎令人生畏,但是请放心。Xcode让入门过程变得尽可能简单,它提了供预先配置的项目,在探索SDK时,你可以轻松地在这些项目的基础上进行修改。由于每个这样的项目都是完全可以运行的骨架,所以你需要做的只是添加一点自定义功能,使之成为自己的应用程序。 首先,启动Xcode,并选择Fi... 查看全部[ 2.1 创建新项目 ]
Xcode预先配置的模板为创建Hello World风格的示例应用程序提供了最简单的途径。在接下来的步骤中,创建一个新项目,编辑它使之显示Hello World,并在iPhone模拟器上运行它。在构建第一个Xcode项目时,你会发现一些关键的开发途径。 2.2.1 创建新项目 安装好iPhon... 查看全部[ 2.2 用模板构建Hello World应用程序 ]
借助iPhone SDK Simulator,可以在Macintosh上使用很多用户在实际设备上执行的操作来测试应用程序。由于Macintosh不是基于触摸的手持设备,所以必须使用菜单、快捷键和鼠标来通过模拟器执行这些任务。关于如何通过模拟器执行这些任务请参阅表2-1。
查看全部[ 2.3 使用模拟器 ]
在探索iPhone SDK时,本着Hello World的精神,知道如何构建简约的应用程序会有所帮助。也就是说,有必要知道如何完全从头开始来构建应用程序,即在没有5个源文件和2个界面文件的情况下构建。因此,下面展示一个非常基本的Hello World的构建过程,它与之前的Hello World例子中... 查看全部[ 2.4 极简单的Hello World ]
Xcode的集成调试器为iPhone应用程序开发提供了一个非常有用的工具。下面展示如何找到这个调试器,并介绍它在程序中的基本用法。在此过程中,你将发现如何设置断点,以及如何使用调试器控制台查看程序细节。这些步骤假定你使用刚才描述的第2版简化的Hello World例子,并且项目窗口已打开,并显示ma... 查看全部[ 2.5 使用调试器 ]
iPhone没有提供垃圾收集机制。它依赖于一个引用计数的内存管理系统。这意味着开发人员必须控制何时创建对象、保留对象和从内存中释放对象。如果使用太多的内存,iPhone会警告应用程序委托和UIViewController。委托收到applicationDidReceiveMemoryWarning:... 查看全部[ 2.6 内存管理 ]
在调优应用程序时,Instruments扮演着重要角色。它提供了一套工具,用于监控性能。通过它的泄漏检测,你可以跟踪、识别和解决程序中的内存泄漏问题。秘诀2-1显示了一个存在两处泄漏问题的应用程序:一处是用malloc()构建了一个字符串,但是没有调用相应的free(),另一处是本章前面展示的NSA... 查看全部[ 2.7 秘诀:使用Instruments检测内存泄漏 ]
可以通过模拟器的一个特性测试应用程序在低内存状况下如何响应。选择Hardware(硬件)→Simulate Memory Warning(模拟内存警告),发送对应用程序委托和视图控制器的调用,请求它们释放不需要的内存。用于实时查看内存分配的Instruments可以监视那些释放。它确保在遇到警告时,... 查看全部[ 2.8 秘诀:使用Instruments监视缓存对象的内存分配 ]
LLVM/Clang static analyzer自动帮助检测Objective-C程序中的bug。它是一款非常棒的用于发现内存泄漏和其他问题的工具。从Xcode 3.2开始,可以直接从Xcode中运行该分析器。选择Build(构建)→Build and Analyze(构建并分析)(Comman... 查看全部[ 2.9 使用Clang静态分析器 ]
针对模拟器的构建和在模拟器中的测试到此为止。iPhone开发的最终目标是创建能够在实际设备上运行的应用程序。达成该目标的方式有3种:为开发而构建,为发布而构建,以及为临时发布而构建。这3种方式分别允许你在设备上进行本地测试,为App Store而构建,以及对在最多100台注册设备上运行的应用程序构建... 查看全部[ 2.10 针对iPhone进行构建 ]
Xcode Organizer帮助管理你的开发设备。选择Window(窗口)→Organizer(组织器)(Control- Command-O)。该窗口(如图2-18所示)是开发计算机与iPhone或iPod测试床之间访问的控制中心。通过该窗口,可以添加和移除应用程序、查看midtest控制台结果... 查看全部[ 2.11 从Xcode到iPhone:Organizer Interface ]
Xcode指令向编译器发出命令,编译器可以检测正在为其构建的平台和固件。这使你可以定制应用程序,以便安全地利用平台或固件特有的特性。将#if语句添加到代码中,可以根据选项阻塞或公布一些功能。例如,为了检测代码是针对模拟器还是针对iPhone编译的,可以使用目标定义:TARGET_IPHONE_SIM... 查看全部[ 2.12 使用编译器指令 ]
针对发布进行构建意味着为应用程序创建一个可以提交到苹果的App Store进行出售的版本。在考虑构建之前,应知道如何清除构建,如何创建发布配置,以及如何找到构建的产品。你需要针对App Store进行严格的编译。首先进行清除,然后使用预设发布配置进行编译,确保应用程序能够正确地上传。找到构建的应用程... 查看全部[ 2.13 针对发布进行构建 ]
清除构建可以确保项目的每个部分都从头开始重新编译。清除构建还可以确保项目构建包含当前版本的项目资产,包括图像和声音。可以通过删除项目文件夹中的bulid文件夹进行强制清除,也可以使用Xcode的内置实用工具。选择Build(构建)→Clean(清除)(Command-Shift-K)。如图2-22所... 查看全部[ 2.14 清除构建 ]
苹果公司允许在App Store之外通过临时发布来发布应用程序。通过临时发布,可以将应用程序发送到最多100台注册设备,并使用一种特殊的移动配置运行那些应用程序,这种特殊移动配置允许应用程序在iPhone的FairPlay限制下执行。临时发布对于beta测试和将审查应用程序提交到新站点和杂志特别有用... 查看全部[ 2.15 针对临时发布进行构建 ]
按定义,Xcode将以下头文件构建到所有源代码中。双尖括号中的每一项是一个变量,是在代码创建时设置的。用户和组织名从Address Book(地址簿)中获取,它们对应于你的个人联系方式信息。这个联系方式的图标使用“me”标记,如图2-24所示。
查看全部[ 2.16 定制Xcode标识 ]
在Xcode中创建新项目时,程序让你选择一个模板。可以从iPhone和Mac OS X选项中进行选择,从任意数量的预先设计的程序骨架开始创建应用程序。对于iPhone,这些模板包括基于视图的应用程序和用OpenGL ES构建的应用程序。在Mac上,可以构建动态库、命令行实用工具和用Cocoa构建的应... 查看全部[ 2.17 创建自定义Xcode模板 ]
当构建新的类时,并排打开头文件和方法文件会有所帮助。在Xcode中,无需在两个窗口之间来回切换,可以同时编辑两个窗口。为此,首先在一个标准编辑器中打开一个.m文件。 定位到编辑区的右上角,就在Ungrouped(取消分组)和Project(项目)按钮下方。在那里,可以在拐角处看到一些图标。拐角处的... 查看全部[ 2.18 并排查看代码 ]
本章阐述了很多主题,依次介绍了如何创建、编译和调试Xcode项目。本章介绍了日常工作中要用到的大多数主要Xcode组件,以及生成和运行iPhone项目的很多不同方式。下面是本章的一些观点。 ·虽然Xcode提供了一些易用的模板,但是应将它们看作起点,而不是终点。你可以根据自己的需要定制和编辑项目,... 查看全部[ 2.19 小结 ]