本书导读
0.1 关于本书
0.1.1 本书的目标
UIKit框架(Framework)不仅是iPhone SDK最基础的部分,也是所有iPhone应用程序的基础,本书专门介绍使用UIKit框架进行iPhone软件开发的基础知识。因此,书中关于Objective-C 2.0语言基础以及Xcode使用方法的内容都省略了。
全书所有的章节都围绕UIKit框架展开,尽量讲解得具体、细致。如果在开发iPhone应用程序过程中碰到了如下疑问,相信你会从本书中找到满意的答案。
- UIKit到底是何种框架?包含了哪些功能?
- 我想使用UISlider,到底该如何使用?
- UIBarButton应如何初始化?
- 我想让iPhone程序画面进行全屏显示,该如何实现?
- viewDidLoad方法的调用时机是什么时候?
- 我大致知道这种类的用途,但是我想详细了解一下它的功能。
- API文档中有这种属性的介绍,但是到哪儿能找到具体的使用实例呢?
0.1.2 本书的特征
本书没有介绍与Objective-C 2.0语言相关的知识,在阅读本书前需要有一定的Objective-C 2.0语言基础。下面是笔者撰写的一本关于Objective-C 2.0语言基础的书籍名称及网站地址:《软件创富密码:iPhone应用程序开发之深入浅出Objective-C 2.0》,http://www.iacademe.net/item?ISBN=978-7-121-13469-2。有兴趣的朋友可以先从这本书开始学习一些关于Objective-C 2.0语言的编程基础。当然还可以参考其他关于Objective-C 2.0语言的书籍或者网上的相关专题介绍。
对于那些有一定iPhone应用程序开发经验的朋友来说,可以放心地阅读本书。它不仅可以帮助你巩固iPhone应用程序开发的基础、提供开发技能,还可以作为iPhone应用程序开发时的工具书来使用。UIKit框架中的类种类繁多,不可能一一记住,以笔者的经验,开发时如果有一本如工具书一样的参考书将会事半功倍。另外,本书以不使用Xcode的“所见即所得”界面编辑功能为前提(在Xcode 4以前版本中即不使用Interface Builder)进行解说。关于不使用界面编辑功能的开发方式在第1章中将有详细介绍。
0.1.3 本书的章节组成
本书中包含的主要章节的基本介绍已经归纳于表0-1中。
表0-1 章节主要内容
0.2 关于实例代码
0.2.1 实例代码下载
本书中各章的实例代码都可以从如下网站进行下载:http://www.softechallenger.com。其中,以zip压缩文件形式供读者下载。所有的这些实例代码都遵循MIT License。读者可以在自己的程序中自由使用、复制这些代码,而且不论应用程序是私用或者是商用。但是其中的图片并不遵循MIT License,除了供读者运行实例程序外,禁止用于其他地方。
0.2.2 命名规则
为了节省篇幅,本书各章节中并没有完整附上所有实例代码,如经常省略接口定义(即@interface)部分的代码。因此当阅读时看到没有定义的变量时,默认已经在@interface或者其他地方定义过了,此时可参考下载的实例代码。
另外,本书在定义的实例变量名后附加下画线,如instanceVariableName_。附加下画线的目的是区分各方法中的本地变量。而且当书中没有看到调用实例变量的release方法进行内存释放时,默认在dealloc方法中已经进行了释放处理。
最后,本书中所有用于演示功能的类名都以UIKitPrj开头,如UIKitPrjAlpha.m。
0.2.3 初始化处理代码
本书实例代码中,多数是在UIViewController的viewDidLoad方法中完成对画面各组成元素的初始化。实际开发中,关于此种初始化处理需要进行仔细考虑,不一定适合放在viewDidLoad方法中。因为通常viewDidLoad方法会被多次调用(可参考本书3.8节中的相关介绍),而且在实现了viewDidLoad方法后,往往需要考虑实现viewDidUnload方法,这两个方法通常是一对集合。
但是,如果考虑上述因素后,结果会将初始化代码变得更复杂,最终影响笔者对主要内容的解说。因此实例代码中基本忽略了对这些因素的考虑,提供了一个最简单的初始化处理过程。
0.2.4 实例代码组织
本书实例代码中,基本上是一个画面用于验证一个功能,因此很多时候是不需要导航条及工具条的。但是如果为每一个这样的画面都创建一个工程的话,这个工程的数量就会大大增加,代码量也会大大增加。读者可以看到,在下载的实例代码中,我们使用了UINavigationController,一个应用程序工程中包含了多个实例。因此,往往会出现执行本书中列出的代码时不显示导航条与工具条,而执行下载的实例代码时会显示导航条与工具条的情况(如图0-1所示)。
图0-1 导航条与工具条的显示差异
读者不要在意这种差异,如果想显示导航条与工具条时,可以在UIViewController的viewWillAppear:animated:方法中追加如下的代码即可。
[self.navigationController setNavigationBarHidden:NO animated:YES]; [self.navigationController setToolBarHidden:NO animated:YES];
相反,如果想隐藏导航条与工具条时,可以执行如下代码。
[self.navigationController setNavigationBarHidden:YES animated:YES]; [self.navigationController setToolBarHidden:YES animated:YES];
另外,一个应用程序工程中所有的实例都罗列于由UITableViewController创建的表格中,如图0-2所示。单元格中显示了各功能演示实例的类名称(类名称开头的“UIKitPrj”被省略了),触摸(在模拟器中“单击”)单元后会进入各功能演示画面中。关于如图0-2所示画面的实现原理(各工程中的类名称都一样为RootViewController)及相关代码,读者在学习了本书第7章后就会明白。在这之前读者可先忽略对这部分代码的研读。
图0-2 启动画面