第1章 启程.1
1.1 预备知识1
1.2 历史背景1
1.3 内容简介2
1.4 小结3
第2章 对C的扩展4
2.1 最简单的Objective-C程序4
2.2 解构HelloObjective-C程序7
2.2.1 #import7
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中的OOP34
3.4.1 @interface部分34
3.4.2 @implementation部分38
3.4.3 实例化对象40
3.4.4 扩展Shapes-Object41
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章 深入了解Xcode82
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章 FoundationKit快速教程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 NSArray115
8.4.2 可变数组118
8.4.3 枚举“王国”119
8.4.4 快速枚举120
8.4.5 NSDictionary120
8.4.6 使用,但不要扩展122
8.5 各种数值122
8.5.1 NSNumber122
8.5.2 NSValue123
8.5.3 NSNull124
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
1