第1章 启程 1
1.1预备知识 1
1.2历史 1
1.3内容简介 2
1.4准备工作 3
1.5小结 5
第2章对C的扩展 6
2.1最简单的Objective-C程序 6
2.2解构Hello Objective-C程序 10
2.2.1 #import语句 10
2.2.2框架 11
2.2.3 NSLog()和@“字符串” 11
2.3布尔类型 14
2.4小结 18
第3章 面向对象编程的基础知识 19
3.1间接 19
3.1.1变量与间接 20
3.1.2使用文件名的间接 22
3.2在面向对象编程中使用间接 28
3.2.1过程式编程 28
3.2.2实现面向对象编程 34
3.3有关术语 37
3.4Objective-C语言中的OOP 38
3.4.1@interface部分 38
3.4.2@implEMentation部分 41
3.4.3实例化对象 43
3.4.4扩展Shapes-Object程序 45
3.5小结 47
第4章 继承 48
4.1为何使用继承 48
4.2继承的语法格式 51
4.3继承的工作机制 53
4.3.1方法调度 54
4.3.2实例变量 55
4.4重写方法 57
4.5小结 59
第5章 复合 61
5.1什么是复合 61
5.2自定义NSLog() 62
5.3存取方法 65
5.3.1设置engine属性的存取方法 66
5.3.2设置tires属性的存取方法 67
5.3.3 Car类代码的其他变化 68
5.4扩展CarParts程序 69
5.5复合还是继承 70
5.6小结 71
第6章 源文件组织 72
6.1拆分接口和实现 72
6.2拆分Car程序 75
6.3使用跨文件依赖关系 77
6.3.1重新编译须知 78
6.3.2让汽车跑一会儿 79
6.3.3导入和继承 81
6.4小结 82
第7章 深入了解Xcode 84
7.1窗口布局一览 84
7.2改变公司名称 85
7.3使用编辑器的技巧 86
7.4在Xcode的帮助下编写代码 87
7.4.1首行缩进(美观排版) 88
7.4.2代码自动完成 88
7.4.3括号配对 90
7.4.4批量编辑 91
7.4.5代码导航 94
7.4.6集中精力 96
7.4.7使用导航条 97
7.4.8获取信息 98
7.5调试 101
7.5.1暴力测试 101
7.5.2 Xcode的调试器 101
7.5.3精巧的调试符号 101
7.5.4开始调试 101
7.5.5检查程序 104
7.6备忘表 105
7.7小结 106
第8章Foundation Kit介绍 107
8.1稳固的Foundation 107
8.2使用项目样本代码 107
8.3一些有用的数据类型 108
8.3.1范围 108
8.3.2几何数据类型 109
8.4字符串 109
8.4.1创建字符串 110
8.4.2类方法 110
8.4.3关于大小 111
8.4.4字符串比较 111
8.4.5不区分大小写的比较 112
8.4.6字符串内是否还包含别的字符串 113
8.4.7可变性 114
8.5集合大家族 115
8.5.1 NSArray 115
8.5.2可变数组 119
8.5.3枚举 120
8.5.4快速枚举 121
8.5.5 NSDictionary 122
8.5.6请不要乱来 124
8.6其他数值 124
8.6.1 NSNumber 124
8.6.2 NSValue 125
8.6.3 NSNull 126
8.7示例:查找文件 126
8.8小结 130
第9章 内存管理 131
9.1对象生命周期 131
9.1.1引用计数 132
9.1.2对象所有权 134
9.1.3访问方法中的保留和释放 134
9.1.4自动释放 136
9.1.5所有对象放入池中 136
9.1.6自动释放池的销毁时间 137
9.1.7自动释放池的工作流程 138
9.2 Cocoa的内存管理规则 140
9.2.1临时对象 141
9.2.2拥有对象 141
9.2.3垃圾回收 143
9.2.4自动引用计数 144
9.3异常 154
9.3.1与异常有关的关键字 155
9.3.2捕捉不同类型的异常 156
9.3.3抛出异常 156
9.3.4异常也需要内存管理 157
9.3.5异常和自动释放池 158
9.4小结 159
第10章 对象初始化 160
10.1分配对象 160
10.1.1初始化对象 160
10.1.2编写初始化方法 161
10.1.3初始化时要做些什么 162
10.2便利初始化函数 163
10.3更多部件改进 164
10.3.1 Tire类的初始化 165
10.3.2更新main()函数 166
10.3.3清理Car类 168
10.4 Car类的内存清理(垃圾回收方式和ARC方式) 171
10.5指定初始化函数 172
10.5.1子类化问题 173
10.5.2 Tire类的初始化函数改进后的版本 175
10.5.3添加AllWeatherRadial类的初始化函数 175
10.6初始化函数规则 176
10.7小结 176
第11章 属性 177
11.1使用属性值 177
11.1.1简化接口代码 178
11.1.2简化实现代码 179
11.1.3点表达式的妙用 182
11.2属性扩展 183
11.2.1名称的使用 186
11.2.2只读属性 188
11.2.3自己动手有时更好 189
11.2.4特性不是万能的 189
11.3小结 189
第12章 类别 191
12.1创建类别 191
12.1.1开始创建类别 192
12.1.2@interface部分 193
12.1.3@implementation部分 194
12.1.4类别的缺陷 195
12.1.5类别的优势 196
12.1.6类扩展 196
12.2利用类别分散实现代码 197
12.3通过类别创建前向引用 200
12.4非正式协议和委托类别 201
12.4.1 ITunesFinder项目 202
12.4.2委托和类别 204
12.4.3响应选择器 205
12.4.4选择器的其他应用 206
12.5小结 206
第13章 协议 207
13.1正式协议 207
13.1.1声明协议 207
13.1.2采用协议 208
13.1.3实现协议 209
13.2复制 209
13.2.1复制Engine 210
13.2.2复制Tire 211
13.2.3复制Car 212
13.2.4协议和数据类型 215
13.3 Objective-C 2.0的新特性 215
13.4委托方法 216
13.5小结 218
第14章 代码块和并发性 219
14.1代码块 219
14.1.1代码块和函数指针 219
14.1.2 Objective-C 变量 223
14.2并发性 224
14.2.1同步 224
14.2.2队列也要内存管理 227
14.2.3操作队列 229
14.3小结 231
第15章AppKit简介 232
15.1构建项目 232
15.2创建委托文件的@interface部分 234
15.3 Interface Builder 235
15.4设计用户界面 236
15.5创建连接 239
15.5.1连接输出口(IBOutlet) 239
15.5.2连接操作(IBAction) 240
15.6应用程序委托的实现 242
15.7小结 244
第16章UIKit简介 245
16.1视图控制器 249
16.2小结 263
第17章 文件加载与保存 264
17.1属性列表 264
17.1.1NSDate 264
17.1.2 NSData 265
17.1.3写入和读取属性列表 266
17.1.4修改对象类型 267
17.2编码对象 268
17.3小结 273
第18章键/值编码 274
18.1入门项目 274
18.2 KVC简介 276
18.3键路径 277
18.4整体操作 278
18.4.1休息一下 279
18.4.2快速运算 282
18.5批处理 284
18.6 nil仍然可用 285
18.7处理未定义的键 286
18.8小结 287
第19章 使用静态分析器 288
19.1静态工作 288
19.1.1开始分析 288
19.1.2协助分析器 292
19.1.3了解更多 293
19.2小结 295
第20章NSPredicate 296
20.1创建谓词 296
20.2计算谓词 297
20.3数组过滤器 298
20.4格式说明符 299
20.5运算符 300
20.5.1比较和逻辑运算符 300
20.5.2数组运算符 301
20.6有SELF就足够了 302
20.7字符串运算符 304
20.8 LIKE运算符 304
20.9结语 305
附录 从其他语言转向Objective-C 306
索引 314