第1章 启程 1
1.1 预备知识 1
1.2 历史背景 1
1.3 内容简介 2
1.4 小结 3
第2章 对C的扩展 4
2.1 最简单的Objective-C程序 4
2.2 解构Hello Objective-C程序 7
2.2.1 #import 7
2.2.2 NSLog()和@“字符串” 8
2.3 布尔类型 10
2.3.1 BOOL强大的实用功能 11
2.3.2 比较 13
2.4 小结 14
第3章 面向对象编程基础知识 15
3.1 间接 15
3.1.1 变量与间接 16
3.1.2 使用文件名的间接 18
3.2 在面向对象的编程中使用间接 24
3.2.1 过程式编程 24
3.2.2 实现面向对象编程 29
3.3 学习有关的术语 33
3.4 Objective-C中的OOP 34
3.4.1 @interface部分 34
3.4.2 @implementation部分 38
3.4.3 实例化对象 40
3.4.4 扩展Shapes-Object 41
3.5 小结 43
第4章 继承 45
4.1 为何使用继承 45
4.2 继承语法 48
4.3 继承的工作机制 51
4.3.1 方法调度 51
4.3.2 实例变量 53
4.4 重写方法 55
4.5 小结 57
第5章 复合 58
5.1 什么是复合 58
5.1.1 Car程序 58
5.1.2 自定义NSLog() 59
5.2 存取方法 62
5.2.1 设置发动机的属性 64
5.2.2 设置轮胎的属性 64
5.2.3 跟踪汽车的变化 66
5.3 扩展CarParts程序 67
5.4 复合还是继承 68
5.5 小结 69
第6章 源文件组织 70
6.1 拆分接口和实现部分 70
6.2 拆分Car程序 73
6.3 使用跨文件依赖关系 75
6.3.1 重新编译须知 75
6.3.2 让汽车开动 77
6.3.3 导入和继承 79
6.4 小结 80
第7章 深入了解Xcode 82
7.1 改变公司名称 82
7.2 使用编辑器的技巧与诀窍 83
7.3 在Xcode的帮助下编写代码 85
7.3.1 首行缩进 85
7.3.2 代码自动完成 85
7.3.3 括号匹配 88
7.3.4 批量编辑 88
7.3.5 代码导航 91
7.3.6 emacs不是Mac程序 91
7.3.7 任意搜索 92
7.3.8 芝麻开门 93
7.3.9 书签 93
7.3.10 集中注意力 94
7.3.11 开启导航条 95
7.4 获取信息 98
7.4.1 研究助手 98
7.4.2 文档管理程序 99
7.5 调试 100
7.5.1 暴力调试 100
7.5.2 Xcode的调试器 100
7.5.3 精巧的调试符号 101
7.5.4 开始调试 101
7.5.5 检查程序 104
7.5 备忘表 105
7.6 小结 106
第8章 Foundation Kit快速教程 107
8.1 一些有用的数据类型 108
8.1.1 范围的作用 108
8.1.2 几何数据类型 108
8.2 字符串 109
8.2.1 创建字符串 109
8.2.2 类方法 109
8.2.3 关于大小 110
8.2.4 比较的策略 110
8.2.5 不区分大小写的比较 112
8.2.6 字符串内是否还包含别的字符串 112
8.3 可变性 113
8.4 集合家族 115
8.4.1 NSArray 115
8.4.2 可变数组 118
8.4.3 枚举“王国” 119
8.4.4 快速枚举 120
8.4.5 NSDictionary 120
8.4.6 使用,但不要扩展 122
8.5 各种数值 122
8.5.1 NSNumber 122
8.5.2 NSValue 123
8.5.3 NSNull 124
8.6 示例:查找文件 124
8.7 小结 128
第9章 内存管理 129
9.1 对象生命周期 129
9.1.1 引用计数 130
9.1.2 对象所有权 132
9.1.3 访问方法中的保留和释放 133
9.2 自动释放 134
9.2.1 所有对象全部入池 135
9.2.2 自动释放池的销毁时间 135
9.2.3 自动释放池的工作过程 136
9.3 Cocoa内存管理规则 138
9.3.1 临时对象 138
9.3.2 拥有对象 139
9.3.3 垃圾回收 141
9.4 小结 142
第10章 对象初始化 143
10.1 分配对象 143
10.2 初始化对象 143
10.2.1 编写初始化方法 144
10.2.2 初始化时做什么 146
10.3 便利初始化函数 146
10.4 更多部件改进 147
10.4.1 Tire类的初始化 147
10.4.2 更新main()函数 149
10.4.3 清理Car类 152
10.5 支持垃圾回收风格的Car类清理 155
10.6 指定初始化函数 156
10.6.1 子类化问题 157
10.6.2 改进Tire类的初始化函数 159
10.6.3 添加AllWeatherRadial类的初始化函数 160
10.7 初始化函数规则 160
10.8 小结 161
第11章 特性 162
11.1 修改特性值 162
11.1.1 简化接口 163
11.1.2 简化实现 164
11.1.3 点表达式的妙用 166
11.2 特性扩展 167
11.2.1 名称的使用 171
11.2.2 读特性 172
11.2.3 特性不是万能的 173
11.3 小结 173
第12章 类别 175
12.1 创建类别 175
12.1.1 声明类别 175
12.1.2 实现类别 176
12.1.3 类别的局限性 178
12.1.4 类别的作用 178
12.2 利用类别分散实现 178
12.3 使用类别创建前向引用 182
12.4 非正式协议和委托类别 183
12.4.1 ITunesFinder项目 184
12.4.2 委托和类别 187
12.4.3 响应选择器 187
12.4.4 选择器的其他应用 188
12.5 小结 189
第13章 协议 190
13.1 正式协议 190
13.1.1 声明协议 190
13.1.2 采用协议 191
13.1.3 实现协议 192
13.2 复制 192
13.2.1 复制Engine 192
13.2.2 复制Tire 194
13.2.3 复制Car 196
13.2.4 协议和数据类型 199
13.3 Objective-C 2.0的新特性 199
13.4 小结 200
第14章 AppKit简介 201
14.1 构建项目 201
14.2 构建AppController @interface 203
14.3 Interface Builder 203
14.4 布局用户界面 205
14.5 连接 207
14.5.1 连接输出口 207
14.5.2 连接操作 208
14.6 AppController实现 210
14.7 小结 212
第15章 文件加载与保存 213
15.1 属性列表 213
15.1.1 NSDate 213
15.1.2 NSData 214
15.1.3 写入和读取属性列表 215
15.2 编码对象 216
15.3 小结 221
第16章 键/值编码 222
16.1 入门项目 222
16.2 KVC简介 224
16.3 路径 225
16.4 整体操作 226
16.4.1 中途小憩 227
16.4.2 流畅地运算 231
16.5 批处理 233
16.6 nil仍然可用 234
16.7 处理未定义的键 235
16.8 小结 236
第17章 NSPredicate 237
17.1 创建谓词 237
17.2 燃料过滤器 239
17.3 格式说明符 240
17.4 运算符 241
17.4.1 比较和逻辑运算符 242
17.4.2 数组运算符 243
17.5 SELF足够了 243
17.6 字符串运算符 245
17.7 LIKE运算符 245
17.8 小结 246
附录 从其他语言转向Objective-C 247