對本書的贊譽
譯者序
前言
緻謝
第一部分 Objective-C簡介
第1章 C,Objective-C的基礎 2
1.1 C程序的結構 3
1.1.1 main函數 3
1.1.2 格式化 3
1.1.3 注釋 4
1.1.4 變量和函數名 4
1.1.5 命名慣例 5
1.1.6 文件 5
1.2 變量 6
1.2.1 整數類型 6
1.2.2 浮點類型 7
1.2.3 真值 7
1.2.4 初始化 7
1.2.5 指針 8
1.2.6 數組 9
1.2.7 字符串 10
1.2.8 結構 10
1.2.9 typedef 12
1.2.10 枚舉常量 12
1.3 運算符 12
1.3.1 算術運算符 12
1.3.2 餘數運算符 13
1.3.3 自增和自減運算符 13
1.3.4 優先級 13
1.3.5 取反 14
1.3.6 比較 14
1.3.7 邏輯運算符 14
1.3.8 邏輯取反 15
1.3.9 賦值運算符 15
1.3.10 轉換和強製類型轉換 16
1.3.11 其他賦值運算符 16
1.4 錶達式和語句 17
1.4.1 錶達式 17
1.4.2 計算錶達式 17
1.4.3 語句 18
1.4.4 復閤語句 18
1.5 程序流程 18
1.5.1 if 18
1.5.2 條件錶達式 19
1.5.3 while 20
1.5.4 do-while 20
1.5.5 for 20
1.5.6 break 21
1.5.7 continue 22
1.5.8 逗號錶達式 22
1.5.9 switch 22
1.5.10 goto 23
1.5.11 函數 24
1.5.12 聲明函數 25
1.6 預處理器 26
1.6.1 包含文件 26
1.6.2 #define 26
1.6.3 條件編譯 27
1.7 printf 28
1.8 使用gcc和gdb 29
1.9 小結 30
1.10 練習 30
第2章 C變量 33
2.1 Objective-C程序的內存布局 33
2.2 自動變量 34
2.3 外部變量 35
2.4 聲明關鍵字 35
2.4.1 auto 35
2.4.2 extern 36
2.4.3 static 36
2.4.4 register 37
2.4.5 const 37
2.4.6 volatile 37
2.5 作用域 38
2.5.1 自動變量的作用域 38
2.5.2 復閤語句和作用域 38
2.5.3 外部變量的作用域 39
2.6 動態分配 39
2.7 小結 41
2.8 練習 42
第3章 麵嚮對象編程簡介 43
3.1 麵嚮對象編程 43
3.1.1 類和實例 43
3.1.2 方法 44
3.1.3 封裝 44
3.1.4 繼承 44
3.1.5 多態 45
3.1.6 麵嚮對象語言的主要特點是什麼 45
3.2 Objective-C簡介 45
3.2.1 定義類 46
3.2.2 類名作為類型 48
3.2.3 消息(調用方法) 48
3.2.4 類對象和對象創建 50
3.2.5 內存管理 51
3.3 Objective-C添加 51
3.3.1 運行時 51
3.3.2 名稱 52
3.3.3 消息錶達式 52
3.3.4 編譯器指令 52
3.3.5 直接量字符串 52
3.3.6 Objective-C關鍵字 53
3.3.7 Cocoa數字類型 55
3.4 小結 56
第4章 第一個Objective-C程序 57
4.1 使用Xcode構建 57
4.2 Objective-C程序結構 59
4.3 麵嚮對象的Hello World 61
4.3.1 Greeter.h 63
4.3.2 Greeter.m 65
4.4 HelloObjectiveC.m 68
4.5 小結 69
4.6 練習 70
第二部分 語言基礎
第5章 消息 72
5.1 方法 72
5.1.1 一個簡單的方法 72
5.1.2 帶有參數的方法 73
5.2 消息 74
5.3 消息細節 76
5.3.1 嵌套 76
5.3.2 嚮nil發送消息 77
5.3.3 嚮self發送消息 78
5.3.4 覆蓋並嚮super發送消息 78
5.3.5 選擇器 80
5.3.6 具有相同名稱的方法 81
5.3.7 動態類型和靜態類型 82
5.4 幕後工作 83
5.5 消息轉發 84
5.6 效率 85
5.7 內省和其他運行時樂趣 87
5.8 小結 88
5.9 練習 88
第6章 類和對象 90
6.1 定義類 90
6.1.1 接口部分 90
6.1.2 @class指令 91
6.1.3 實現部分 92
6.1.4 導入 92
6.2 子類化一個類 93
6.2.1 定義一個子類 93
6.2.2 子類示例 94
6.2.3 類繼承 97
6.2.4 類層級示例 97
6.2.5 抽象類 98
6.3 創建對象 99
6.3.1 對象分配 99
6.3.2 對象初始化 100
6.4 銷毀對象 106
6.5 復製對象 107
6.5.1 淺復製和深復製 108
6.5.2 可變復製和不可變復製 108
6.5.3 在自己的類中實現復製 109
6.6 小結 111
6.7 練習 112
第7章 類對象 113
7.1 類對象 113
7.1.1 類類型 114
7.1.2 類方法 115
7.2 其他類方法 116
7.2.1 簡便構造函數 116
7.2.2 單體 118
7.2.3 初始化類 118
7.3 模擬類變量 120
7.4 小結 124
7.5 練習 125
第8章 框架 127
8.1 什麼是框架 127
8.2 Cocoa框架 128
8.3 AppKit 129
8.4 Core Foundation 130
8.4.1 Core Foundation對象的內存管理 131
8.4.2 自由轉換 132
8.5 Core Graphics 133
8.6 Core Animation 133
8.7 其他Apple提供的框架 134
8.8 第三方框架 134
8.9 幕後揭秘 135
8.10 小結 135
第9章 常用Foundation類 136
9.1 可變類和不可變類 136
9.2 類簇 136
9.3 NSString 137
9.3.1 NSString示例 138
9.3.2 C字符串和NSString之間的轉換 140
9.3.3 直接量字符串 141
9.4 集閤類 141
9.4.1 NSArray 141
9.4.2 NSDictionary 144
9.4.3 NSSet 145
9.5 NSNumber 146
9.6 NSNull 147
9.7 NSData 148
9.7.1 訪問NSData的字節 149
9.7.2 文件和NSData之間的轉換 149
9.8 NSURL 149
9.9 結構 150
9.10 小結 151
9.11 練習 151
第10章 Objective-C中的控製結構 153
10.1 if語句 153
10.2 for語句和隱式循環 156
10.2.1 for語句 156
10.2.2 隱式循環 156
10.2.3 帶有塊的隱式循環 157
10.3 while語句和NSEnumerator 157
10.4 快速枚舉 159
10.5 一個使用快速枚舉的示例 161
10.6 異常 164
10.6.1 拋齣自己的異常 165
10.6.2 多個@catch語句塊 166
10.6.3 嵌套異常處理 167
10.6.4 使用異常 168
10.6.5 應該使用異常嗎 168
10.7 小結 170
10.8 練習 170
第11章 分類、擴展和安全 172
11.1 分類 172
11.1.1 使用分類覆蓋方法 174
11.1.2 分類的其他用法 175
11.2 擴展 176
11.3 實例變量作用域(訪問控製) 177
11.4 對方法的訪問控製 178
11.5 命名空間 179
11.6 安全 179
11.7 從Objective-C調用C函數 181
11.7.1 技術上 181
11.7.2 實踐上 182
11.7.3 哲學上 182
11.8 小結 182
11.9 練習 182
第12章 特性 184
12.1 在對象之外訪問實例變量(不要這麼做) 184
12.2 聲明和實現訪問器 185
12.3 使用特性的訪問器 187
12.4 @property語句 189
12.4.1 assign、retain和copy 189
12.4.2 readwrite和readonly 190
12.4.3 nonatomic 190
12.4.4 setter=nam和getter=name 191
12.4.5 attributes和@dynamic 191
12.5 關於@dynamic的更多內容 191
12.6 特性和內存管理 193
12.7 子類化和特性 194
12.8 對readonly特性隱藏setter 195
12.9 特性作為文檔 195
12.10 點語法 196
12.10.1 點語法和特性 197
12.10.2 點語法和C結構 198
12.11 小結 199
12.12 練習 199
第13章 協議 201
13.1 協議 201
13.2 使用協議 202
13.2.1 聲明一個協議 202
13.2.2 采用協議 203
13.2.3 協議作為類型 203
13.2.4 特性和協議 203
13.3 TablePrinter示例 204
13.3.1 TablePrinterDataSource 205
13.3.2 TablePrinter 205
13.3.3 FruitBasket 207
13.3.4 main 209
13.3.5 一個問題 210
13.3.6 實現可選的方法 210
13.4 協議對象和一緻性測試 211
13.5 非正式協議 212
13.6 小結 212
13.7 練習 213
第三部分 高級概念
第14章 引用計數 216
14.1 問題 216
14.2 引用計數 217
14.3 接受對象 219
14.4 所有權 221
14.5 dealloc 222
14.6 返迴對象 223
14.6.1 autorelease 224
14.6.2 自動釋放池 224
14.6.3 管理自動釋放池 225
14.6.4 迴顧簡便構造函數 226
14.6.5 自動釋放和iPhone 226
14.6.6 使用額外的自動釋放池來控製內存使用 226
14.7 retainCount 227
14.8 多綫程 228
14.9 何時引用計數不好 229
14.10 保留循環 230
14.11 最後說再見:麯終人散時 233
14.12 小結 233
14.13 練習 234
第15章 垃圾收集 236
15.1 垃圾收集:理論 236
15.2 垃圾收集:實踐 237
15.3 使用垃圾收集器 238
15.4 終結器 240
15.5 malloc和垃圾收集 241
15.6 Core Foundation對象和垃圾收集 241
15.7 過程中的一些難點 242
15.7.1 AppKit中的透明指針問題 242
15.7.2 內部指針 245
15.7.3 錯誤的根對象 246
15.8 垃圾收集的優點和缺點 246
15.8.1 積極方麵 246
15.8.2 消極方麵 246
15.8.3 應該使用垃圾收集嗎 246
15.9 小結 247
15.10 練習 247
第16章 塊 251
16.1 函數指針 251
16.1.1 用函數指針調用一個函數 253
16.1.2 使用函數指針 253
16.2 使用函數指針的問題 255
16.3 NSInvocation 256
16.4 塊 258
16.4.1 塊指針 258
16.4.2 訪問變量 259
16.4.3 塊變量 261
16.4.4 塊是基於棧的 261
16.4.5 全局塊 262
16.4.6 塊是Objective-C對象 262
16.4.7 復製塊 262
16.4.8 塊的內存管理 263
16.4.9 陷阱 265
16.4.10 Cocoa中的塊 266
16.4.11 樣式問題 269
16.5 一些原理上的限製 270
16.6 小結 270
16.7 練習 270
第四部分 附錄
附錄A 保留字和編譯器指令 274
附錄B 自由轉換類 275
附錄C 32位和64位 276
附錄D 運行時,舊的和新的 279
附錄E Objective-C的資源 282
· · · · · · (
收起)