全部博文(465)
分类: IT业界
2012-10-24 13:42:51
20天搞定iPhone软件开发
(一天一讲,20天轻松搞定iPhone开发)
王志刚,朱蕾,王中元编著.
ISBN 978-7-121-18487-1
2012年10月出版
定价:69.00元
16开
404页
宣传语
无论你是菜鸟还是有其他编程经验的程序员
一天一讲,20天轻松搞定iPhone开发
内 容 简 介
本书是为有一定其他语言编程经验的程序员转向iOS软件开发而撰写的速成教材。全书一共20讲,一天完成1讲的学习。本着循序渐进的原则,前面的10讲偏重于Cocoa面向对象编程的基本概念以及Objective-C 2.0语言的语法基础。 从第10讲以后开始进入iOS软件开发的实战阶段,每1讲的内容都比较充实,其中包含了各种实例代码,读者可以在Xcode等开发环境中边实践边学习。读者完成全书20讲的学习后可以达到初级iOS程序员的水准。
前 言
对iPhone软件开发稍有了解的朋友应该都知道,要短时间从其他语言的程序员过渡为iPhone软件开发的程序员,必须掌握两个方面的iPhone编程知识,即Objective-C2.0语言和iPhone SDK。对于有一定软件开发经验,特别是有面向对象语言(如C++Java)开发经验的程序员来说,掌握iPhone软件开发所必需的Objective-C 2.0语言是没有多少难度,最困难的是学会对iPhone SDK中所提供各类框架(framework)的使用。iPhone SDK中光框架就要几十种之多,再加上各种动态链接库(Dynamic Library,提供各种特定功能的API库,如数据库应用、解压缩等),总计有上百种之多。在一本速成类型的书籍中不可能都一一涉及。以笔者的经验,完成iPhone软件开发的入门,最关键的是掌握用于开发iPhone应用程序界面的UIKit框架。实际上,运行iPhone/iPad/iPod Touch上的iPhone应用程序本质上类似于客户软件终端,开发时涉及最多的也是软件界面。
本着以上的想法,笔者编写了这本名为《20天搞定iPhone软件开发》的书。一共20讲,一天完成一讲的学习。本着循序渐进的原则,前10讲偏重于Cocoa面向对象编程的基本概念及Objective-C 2.0语言的语法基础,对于有面向对象编程基础且有一定编程经验的读者来说,学习起来应该很轻松,可能提前几天就可以完成学习。
第10讲以后开始进入iPhone软件开发的实战阶段,每一讲的内容都比较充实,其中包含了各种实例代码,鼓励读者在Xcode等开发环境中进行试运行验证。部分章节可能在一天之内难以掌握。其中第11讲至第13讲介绍了iPhone软件开发时经常用到的各种基础数据类型的使用知识;第14讲至第17讲是关于UIKit框架中各种类的使用方法及技巧,是学习iPhone软件开发时需要重点掌握的知识;第18讲介绍了在iPhone应用程序中使用数据库的技巧,包括直接使用SQLite数据库以及使用CoreData来间接操作SQLite数据库;最后第19讲和第20讲介绍了iPhone应用程序调试的基础,第19讲介绍了开发阶段的调试技巧,第20讲介绍如何在实际终端设备上进行调试的相关操作及技巧。
本书的目标是让对iPhone软件开发比较陌生的程序员成为初步具有“实战能力”的iPhone软件程序员,以本书中学习到的iPhone软件开发知识为基础,可以进一步学习iPhone SDK中的其他各种框架,逐步提高自己的开发能力。
武汉大学计算机学院王中元副教授以及朱蕾负责编写了本书中的部分内容。另外,江友华、罗伟、黄建峰、朱至濂参加了本书部分章节的审校及协助编写工作。在此特别感谢电子工业出版社包括孙学瑛编辑在内的各位编辑在本书编写过程中的大力支持。
作 者
2012年8月
目 录
第1讲 配置开发环境.................................................1
1.1 Mac应用程序开发环境 .................................................1
1.2 iPhone应用程序开发环境 ..................................................................2
1.3 查看安装目录内容 ........................................................4
1.3.1 启动Xcode................................................................... 5
1.3.2 启动Interface Builder .................................................. 6
1.4 Mac中的基本操作 .........................................................6
1.4.1 弹出菜单的显示方法 .................................................. 6
1.4.2 工具条的定制 .............................................................. 8
第2讲 应用程序与框架 ...............................................................10
2.1 关于应用程序 ..............................................................10
2.1.1 应用程序的种类 .........................................................11
2.1.2 关于iPhone应用程序 ................................................. 12
2.2 框架 .............................................................................13
2.2.1 简单的【Hello World】程序 ..................................... 13
2.2.2 框架的出现 ............................................................... 13
2.2.3 编程语言与框架的关系 ............................................. 14
2.3 Mac OS X以及iPhone SDK中的框架 ..............................................14
2.3.1 框架的安装目录 ........................................................ 14
2.3.2 Cocoa与Carbon ......................................................... 15
2.3.3 应用程序中使用的框架 ............................................. 16
2.4 Cocoa与Carbon的发展轨迹 .............................................................18
第3讲 Cocoa与Objective-C ......................................................20
3.1 框架的使用 .................................................................20
3.1.1 关于API .................................................................... 20
3.1.2 API与编程语言的关系 .............................................. 21
3.2 Objective-C的发展史 ...................................................22
3.3 用于其他语言中的Cocoa API ..........................................................23
3.3.1 通过桥调用Cocoa...................................................... 23
3.3.2 是否应提倡在Objective-C以外的语言中调用Cocoa API的开发方式 .................. 24
3.4 解答与Objective-C相关的几个疑问 ................................................25
第4讲 开发工具 .......................................................27
4.1 Xcode ...........................................................................27
4.1.1 综合开发环境Xcode的功能 ..................................... 27
4.1.2 工程窗口 ................................................................... 28
4.1.3 文本编辑器的功能 .................................................... 32
4.1.4 开发者手册 ............................................................... 35
4.2 Interface Builder ...........................................................36
4.3 Dashcode ......................................................................37
4.4 iPhone模拟器 ...............................................................38
4.5 其他工具 .....................................................................38
4.5.1 FileMerge .................................................................. 38
4.5.2 Icon Composer .......................................................... 39
4.5.3 Property List Editor ................................................... 39
4.6 Mac或iPhone应用程序开发的流程 .................................................39
4.6.1 准备应用程序用的材料 ............................................. 39
4.6.2 建立步骤 ................................................................... 41
4.6.3 gcc ........................................................ 42
第5讲 Cocoa环境下的面向对象编程 .....................................43
5.1 面向对象的基本概念术语 ...............................................................43
5.1.1 类 ......................................................... 44
5.1.2 实例 ..................................................... 44
5.1.3 实例变量 ................................................................... 44
5.1.4 方法 ..................................................... 45
5.1.5 继承 ..................................................... 45
5.1.6 相互关系 ................................................................... 46
5.1.7 对象 ..................................................... 46
5.2 在Cocoa实例中理解基本术语 .........................................................47
5.2.1 通过按钮配置理解基本术语 ..................................... 47
5.2.2 文本输入框的继承关系 ............................................. 48
第6讲 Hello World应用程序 ......................................................49
6.1 Hello World程序 ...........................................................49
6.2 启动Xcode创建工程 ....................................................49
6.3 编辑代码 .....................................................................51
6.4 启动Interface Builder设计用户界面 ................................................52
6.4.1 xib文件................................................. 52
6.4.2 Interface Builder窗口 ................................................ 53
6.4.3 设计Hello World的用户界面 ..................................... 55
6.5 连接插座与动作 ..........................................................55
6.6 完成Hello World App Delegate的代码编写 ....................................................58
6.7 建立与运行 .................................................................59
6.8 开发步骤再回顾 ........................................................61
第7讲 MVC构架 ......................................................62
7.1 Hello World应用程序开发流程中包含的信息 ..........................................................62
7.2 什么是MVC构架 .........................................................62
7.2.1 视图层 .................................................. 63
7.2.2 模型层 .................................................. 63
7.2.3 控制层 .................................................. 64
7.3 使用MVC构架的实例 .................................................64
7.3.1 iTunes的模型 ............................................................ 64
7.3.2 iTunes的视图 ............................................................ 65
7.3.3 iTunes的控制 ............................................................ 66
7.4 使用MVC构架的Cocoa应用程序开发特点 ..................................................66
7.4.1 视图组件由Cocoa提供 .............................................. 66
7.4.2 保持视图与模型间的相互独立 ................................. 67
7.4.3 应用程序特有的功能由控制提供 ................................................... 67
7.4.4 只用创建模型以及控制的类 ..................................... 67
第8讲 插座与动作 ...................................................68
8.1 视图与控制间信息交换 ...................................................................68
8.2 插座与动作 .................................................................69
8.2.1 什么是插座 ............................................................... 69
8.2.2 什么是动作 ............................................................... 69
8.3 插座与动作的连接 .....................................................70
8.3.1 插座与动作的追加 .................................................... 70
8.3.2 插座的连接 ............................................................... 71
8.3.3 动作的连接 ............................................................... 72
8.3.4 连接确认 ...................................................................73
第9讲 Objective-C的语法 ..........................................................75
9.1 Objective-C的编程概论 ....................................................................75
9.1.1 Objective-C与C语言 ................................................. 75
9.1.2 Objective-C程序 ........................................................ 75
9.1.3 类的声明与实体 ........................................................ 76
9.1.4 创建Objective-C的测试工程 ..................................... 76
9.2 类的声明 .....................................................................81
9.2.1 导入声明文件 ............................................................ 81
9.2.2 类的声明 ................................................................... 82
9.2.3 实例变量的声明 ........................................................ 82
9.2.4 实例方法的声明 ........................................................ 83
9.3 编写类的实体 ..............................................................87
9.3.1 编写类的实体 ............................................................ 87
9.3.2 编写方法代码 ............................................................ 87
9.3.3 关于方法的声明 ........................................................ 88
9.4 对象专用变量类型 ......................................................88
9.4.1 实例对象专用的变量类型 ......................................... 88
9.4.2 id类型 .................................................. 89
9.4.3 nil类型 ................................................. 89
9.4.4 在条件表达式中使用对象变量 ................................. 89
9.5 方法调用 .....................................................................90
9.5.1 实例方法的调用 ........................................................ 90
9.5.2 类方法的调用 ............................................................ 91
9.5.3 对象为nil的情况 ....................................................... 92
9.6 命名规则 .....................................................................92
9.6.1 类的命名规则 ............................................................ 92
9.6.2 实例变量的命名规则 ................................................ 93
9.6.3 方法的命名规则 ........................................................ 93
9.7 重新解析Cocoa的Hello World程序..................................................94
9.7.1 HelloWorldAppDelegate.h ......................................... 94
9.7.2 HelloWorldAppDelegate.m ........................................ 95
第10讲 内存管理 .....................................................98
10.1 内存分配与释放 ........................................................98
10.2 与内存相关的问题 ....................................................99
10.2.1 内存释放的时机 .................................................... 99
10.2.2 内存泄漏 ............................................................. 100
10.3 使用垃圾收集进行内存管理 .......................................................100
10.3.1 垃圾回收 ............................................................. 100
10.3.2 Objective-C与垃圾回收 ...................................... 102
10.3.3 垃圾回收功能有效化 .......................................... 103
10.3.4 垃圾回收编程的规则 .......................................... 103
10.4 由参照统计实现的内存管理 .......................................................104
10.4.1 参照统计的基本概念 .......................................... 104
10.4.2 retain、release方法 ............................................. 104
10.4.3 对象保持到释放的流程 ...................................... 105
10.5 类的实例化 ..............................................................106
10.5.1 类的实例化与初期化 .......................................... 107
10.5.2 自动释放 ............................................................. 108
10.5.3 创建实例的方法 .................................................. 108
10.5.4 实例的释放 ......................................................... 109
10.6 内存管理的规则 ......................................................110
10.6.1 临时对象 ..............................................................110
10.6.2 内存管理经验总结 ...............................................111
第11讲 字符串 ........................................................113
11.1 字符串专用类 ...........................................................113
11.2 NSString与NSMutableString ........................................................113
11.3 字符编码 ..................................................................114
11.3.1 什么是字符编码 ...................................................114
11.3.2 NSString的字符代码为Unicode ................................................115
11.3.3 NSStringEncoding ................................................115
11.4 字符串的生成 ...........................................................116
11.4.1 使用【@“”】的形式创建新字符串 ......................................116
11.4.2 创建中文字符串 ...................................................116
11.4.3 使用格式创建字符串 ...........................................118
11.5 NSRange ..................................................................119
11.6 字符串处理 ...............................................................120
11.6.1 计算字符串的长度 .............................................. 120
11.6.2 字符串连接、插入、删除 ................................... 121
11.6.3 字符串的比较 ..................................................... 124
11.6.4 字符串的检索 ..................................................... 125
11.6.5 抽取部分字符串 .................................................. 126
11.7 读写文本文件 ...........................................................127
11.7.1 读取文本文件 ..................................................... 127
11.7.2 文本文件输出 ..................................................... 128
第12讲 集合 ............................................................130
12.1 数组 .........................................................................130
12.1.1 NSArray与 NSMutableArray .................................................... 130
12.1.2 数组的创建 ......................................................... 131
12.1.3 数组的长度 ......................................................... 132
12.1.4 通过索引取得对象 .............................................. 132
12.1.5 使用NSEnumerator取得对象 ................................................... 133
12.1.6 使用高速枚举取得对象 ...................................... 136
12.1.7 对象的追加与删除 .............................................. 136
12.2 字典 .........................................................................138
12.2.1 什么是字典类型 .................................................. 138
12.2.2 NSDictionary与 NSMutableDictionary ..................................... 139
12.2.3 NSDictionary的创建 ........................................... 139
12.2.4 键与值的取得 ..................................................... 141
12.2.5 键与值的追加 ..................................................... 142
12.3 包装类 .....................................................................143
12.3.1 什么是包装类 ..................................................... 143
12.3.2 NSNumber .......................................................... 144
12.4 对象的等价与同值 ..................................................146
12.4.1 拥有相同值的对象 .............................................. 146
12.4.2 等价与同值的判定 .............................................. 146
12.4.3 在集合类中的应用 .............................................. 147
12.5 集合类与参照统计 ..................................................148
12.5.1 NSArray与参照统计 ........................................... 148
12.5.2 NSDictionary与参照统计 .................................... 149
第13讲 XML应用 ...................................................150
13.1 XML概要 .................................................................150
13.1.1 什么是XML ........................................................ 150
13.1.2 一种常用的XML实例——RSS ................................................ 150
13.2 XML的解析 ..............................................................151
13.2.1 解析及解析器 ..................................................... 151
13.2.2 XML解析器的种类 ............................................. 152
13.2.3 树结构................................................................. 153
13.3 Cocoa的XML解析器 ....................................................................154
13.3.1 NSXMLDocument、NSXMLNode、NSXMLElement .................................. 154
13.3.2 XML文档的解析器 ............................................. 155
13.3.3 Xpath .................................................................. 157
13.3.4 节点信息 ............................................................. 158
13.3.5 节点的父子关系 .................................................. 159
13.3.6 属性值的取得 ..................................................... 161
13.4 iPhone 应用软件中的XML解析实例 ..........................................162
13.4.1 第三方API及实例概要 ........................................ 162
13.4.2 创建并完成RSS文件解析程序 ................................................. 163
第14讲 UIKit框架简介及iPhone应用程序基础类 ..................................168
14.1 UIKit概要 ................................................................168
14.1.1 UIKit类列表 ........................................................ 168
14.1.2 iPhone Hello World程序 ...................................... 171
14.1.3 不使用Interface Builder的Hello World程序 ............................. 175
14.1.4 在Xcode 4中创建Hello World程序 ........................................... 180
14.2 画面构成基础——UIView ...........................................................184
14.2.1 UIView概要 ........................................................ 184
14.2.2 UIView嵌套 ........................................................ 187
14.3 UIViewController与画面控制 ......................................................195
14.3.1 使用UIViewController实现简单的画面切换 ............................ 195
14.3.2 使用UITabBarController实现并列画面跳转 ............................ 200
14.3.3 使用UINavigationController实现多层画面跳转 ...................... 204
14.3.4 跳转到任意画面 .................................................. 210
14.3.5 模态(modal)画面的显示方法 .............................................. 212
第15讲 iPhone应用程序中的事件响应 ................................215
15.1 事件响应 .................................................................215
15.1.1 按钮的触摸 ......................................................... 215
15.1.2 响应方法的定义 .................................................. 217
15.1.3 滑块的滑动 ......................................................... 218
15.2 UIResponder .............................................................221
15.2.1 画面触摸的检测 .................................................. 221
15.2.2 标签触摸的检测 .................................................. 222
15.2.3 响应链................................................................. 224
15.2.4 触摸系列最终处理及取消 ................................... 228
15.3 二次触碰 .................................................................229
15.4 手势 .........................................................................232
15.4.1 拖动检测 ............................................................. 232
15.4.2 滑动检测 ............................................................. 236
15.4.3 快速滑动检测 ..................................................... 240
15.5 多点触摸 .................................................................243
15.5.1 检测多点触摸 .................................................... 243
15.5.2 检测双指滑动 ..................................................... 244
15.5.3 检测扩大/缩小 .................................................. 246
15.6 振动 .........................................................................249
15.6.1 检测振动 .............................................................249
第16讲 常用UI控件 ...................................................................252
16.1 标签(UILabel) .....................................................252
16.1.1 文本与对齐方式的设置 ...................................... 252
16.1.2 标签颜色与文本颜色的修改 .................................................... 253
16.1.3 改变字体 ............................................................. 254
16.1.4 字体尺寸的自动调整 .......................................... 254
16.1.5 多行字符串 ......................................................... 255
16.1.6 换行与省略 ......................................................... 256
16.1.7 高亮时的文本颜色 .............................................. 256
16.1.8 阴影显示 ............................................................. 256
16.1.9 绘制方法的定制 .................................................. 258
16.2 按钮(UIButton) ...................................................259
16.2.1 按钮的配置与触摸检测 ...................................... 259
16.2.2 按钮的种类 ......................................................... 259
16.2.3 按钮的状态及标题变化 ...................................... 260
16.2.4 按钮触摸时的阴影反转 ...................................... 261
16.2.5 按钮触摸时的背景闪烁 ...................................... 261
16.2.6 在按钮中追加图片 .............................................. 262
16.2.7 设置按钮背景图片 .............................................. 263
16.2.8 调整按钮的边间距 .............................................. 264
16.2.9 设置标题的换行/省略 ...................................... 265
16.3 文本输入框(UITextField) ........................................................266
16.3.1 文本输入框的显示 .............................................. 266
16.3.2 键盘的显示/隐藏 .............................................. 266
16.3.3 键盘的各种设置 .................................................. 267
16.3.4 文本输入框的边框线 .......................................... 267
16.3.5 文本的横向与纵向的调整 ................................... 267
16.3.6 文本输入框的字体及颜色 ................................... 268
16.3.7 提示信息的设置 .................................................. 269
16.3.8 清空按钮的显示 .................................................. 269
16.3.9 背景图片的设置 .................................................. 270
16.3.10 UIView的追加 .................................................... 270
16.3.11 文本输入框的状态监视 ...................................... 272
16.4 开关(UISwitch) ...................................................272
16.5 选择控件(UISegmentedController) .........................................274
16.5.1 选择控件的使用方法 .......................................... 274
16.5.2 选择控件的种类 .................................................. 276
16.5.3 不显示选择状态 .................................................. 276
16.5.4 选择控件的颜色变更 .......................................... 276
16.5.5 使用图标的选择控件 .......................................... 277
16.5.6 修改选项内容的显示位置 ................................... 278
16.5.7 设置选项的非活性 .............................................. 278
16.5.8 选项的插入与删除 .............................................. 278
16.6 滑块(UISlider) .....................................................280
16.6.1 滑块的使用方法 .................................................. 280
16.6.2 滑块值的通知时机 .............................................. 281
16.6.3 向滑块中追加图标 .............................................. 281
16.6.4 滑块的定制 ......................................................... 282
16.7 日期时刻选择框(UIDatePicker) .............................................284
16.7.1 日期时刻选择框的使用 ...................................... 284
16.7.2 以动画形式改变日期 .......................................... 285
16.7.3 设置间隔及最小/最大值 ................................... 285
16.7.4 日期选择框的种类 .............................................. 286
16.7.5 定制日期选择框 .................................................. 287
第17讲 表格视图(UITableView) .......................................290
17.1 表格显示 .................................................................290
17.1.1 最简单的表格显示 .............................................. 290
17.1.2 单元选择时的动作 .............................................. 293
17.1.3 表格的分段显示 .................................................. 294
17.1.4 表格的分组显示 .................................................. 297
17.1.5 段脚的显示 ......................................................... 299
17.1.6 索引的活用 ......................................................... 299
17.2 单元的定制 ..............................................................301
17.2.1 单元尺寸及颜色的修改 ...................................... 301
17.2.2 单元分隔线的修改 .............................................. 302
17.2.3 追加图片 ............................................................. 303
17.2.4 追加细节标签 ..................................................... 305
17.2.5 追加附件 ............................................................. 306
17.2.6 追加自定义附件 .................................................. 308
17.2.7 追加仅编辑模式时显示的附件 ................................................ 309
17.2.8 追加控件 ..............................................................311
17.2.9 定制单元背景 ..................................................... 315
第18讲 使用SQLite数据库 ......................................................317
18.1 SQLite数据库及使用SQLite数据库的前期准备 ................................................317
18.1.1 SQLite数据库概要 .............................................. 317
18.1.2 使用SQLite数据库的前期准备 ................................................ 318
18.2 创建数据库及表格 ..................................................319
18.3 连接数据库 ..............................................................321
18.4 数据检索 .................................................................324
18.5 数据的追加与删除 ..................................................328
18.6 数据库更新 ..............................................................332
18.7 使用Core Data进行数据的追加、删除 .......................................335
18.7.1 Core Data的优点 ................................................. 335
18.7.2 创建使用Core Data的应用程序................................................ 336
18.7.3 改造Core Data的数据模型 .................................. 337
18.7.4 修改数据登录与保持代码 ................................... 341
18.7.5 数据删除代码 ..................................................... 342
18.8 追加编辑数据画面 ..................................................342
18.9 添加排序项目 ..........................................................345
第19讲 调试方法 ...................................................349
19.1 缺陷与调试 ..............................................................349
19.1.1 什么是缺陷与调试 .............................................. 349
19.1.2 描述缺陷 ............................................................. 350
19.1.3 缺陷的重现 ......................................................... 350
19.2 NSLog ......................................................................351
19.2.1 使用NSlog输出调试信息 .................................... 351
19.2.2 NSLog的格式 ...................................................... 353
19.3 调试工具 .................................................................354
19.3.1 什么是调试工具 .................................................. 355
19.3.2 调试构建配置 ..................................................... 355
19.3.3 断点与调试模式的启动 ...................................... 356
19.3.4 调试界面 ............................................................. 356
19.3.5 调试的分步执行 .................................................. 358
19.4 例外 .........................................................................359
19.4.1 什么是例外 ......................................................... 359
19.4.2 捕捉例外 ............................................................. 360
19.4.3 发生例外时停止运行 .......................................... 362
19.4.4 避免使用太多的例外 .......................................... 363
第20讲 使用iPhone终端进行测试 .........................................364
20.1 iPhone Developer Program ............................................................364
20.1.1 【iPhone Developer Program】的会员种类 ............................. 364
20.1.2 【iPhone Developer Program】的注册手续 ............................. 365
20.1.3 关于【Apple ID】 ............................................... 365
20.1.4 【iPhone Developer Program】的付款及认证手续 .................. 366
20.2 在实际iPhone手机上的调试 ........................................................366
索引 ..............................................................................379