基本信息
原書名:Cocoa(R) Programming for Mac(R) OS X (3rd Edition)
原出版社: Addison-Wesley Professional
作者:Aaron Hillegas
譯者:錢友才 陳勇 王健
出版社:電子工業出版社
ISBN:9787121092398
出版日期:2009 年8月
開本:16開
頁碼:433
版次:3-1
編輯推薦
從零開始學習Cocoa的首選圖書.
涵蓋了最新的Mac編程技術
高級Mac OS X開發者們聯手強烈推薦..
Mac OS X編程圖書的標桿
Aaron Hillegass多年Cocoa教學實踐經驗的總結
內容簡介
本書的內容是作者多年的Cocoa教學實踐經驗的總結,涵蓋了最新的Mac編程技術,包括Xcode 3、Objective-C2.0、CoreData、垃圾收集器,以及CoreAnimation。本書系統介紹了Objective-C語言、Cocoa主要的設計模式、必要的開發工具Xcode、Interface Builder和Instnanents。全書貫穿以具體的實例,引導讀者通過實踐掌握Cocoa框架的基本思想。閱讀這本書不要求任何的Mac編程經驗,只需要基本的c語言,以及面向對象的知識
目錄
第1章 什麼是cocoa 1
1 1 歷史簡介 1
1 2 開發工具 3
1 3 語言 4
1 4 對象、類、方法和訊息 4
1 5 框架 6
1 6 怎樣閱讀這本書 6
1 7 常見錯誤 7
1 8 怎樣學習 8
第2章 起步 9
2 1 xcode 9
新建一個項目 10
main函式 12
2 2 interface builder 13
library視窗 14
空白視窗 14
布局界面 15
指示視窗 17
創建一個類 17
創建一個對象 19
建立連線 20
2 3 回到xcode 23
objective-c中的類型和常量 23
查看頭檔案 24
編輯定義檔案 25
編譯運行 27
awakefromNIB 28
2 4 文檔 29
2 5 你做了什麼 30
第3章 objective-c語言 33
3 1 創建、使用對象 33
3 2 使用已有的類 35
給nil傳送訊息 40
nsobject、nsarray、nsmutablearray和nsstring 41
繼承和組合 45
3 3 建自己的類 46
創建lotteryentry類 46
修改lottery m 49
實現description方法 50
編寫initializers(初始化器) 55
帶參數的initializer 56
3 4 調試器 58
3 5 補充知識:訊息機制工作原理是什麼 62
3 6 挑戰 63
第4章 記憶體管理 65
4 1 開關垃圾收集器 66
4 2 使用Garbage collection 68
4 3 使用retain 計數 68
實現dealloc 71
創建自動釋放對象 72
accessor方法 74
4 4 你完成了什麼 77
第5章 target/action 79
5 1 一些常用的nscontrol子類 81
nsbutton 81
nsslider 82
nstextfield 83
5 2 開始speakline例子 85
5 3 nib檔案的布局 86
使用interface builder建立連線 87
nswindow的initialfirstresponder outlet 88
5 4 實現appcontroller類 88
5 5 補充知識:通過代碼來設定target 90
5 6 挑戰 90
5 7 調試建議 92
第6章 helper對象 95
6 1 委託(delegate) 96
6 2 nstableview和它的datasource 99
6 3 布局用戶界面 102
6 4 創建連線 103
6 5 修改appcontroller m 105
實現委託時的常見錯誤 107
對象委託 107
6 6 補充知識:委託是如何工作的 108
6 7 挑戰:創建一個委託 109
6 8 挑戰:創建一個數據源 110
第7章 key-value coding;key-value observing 111
7 1 key-value coding 111
7 2 綁定 113
7 3 key-value observing 115
7 4 讓keys可被觀察 116
7 5 properties和它們的attributes 118
@property和@synthesize 118
一個property的attributes 119
7 6 補充知識:key paths 120
7 7 補充知識:key-value observing 121
第8章 nsarraycontroller 123
8 1 開始寫raiseman套用 124
在xcode中 125
在interface builder中 128
8 2 key-value coding和nil 132
8 3 添加排序 133
8 4 補充知識:不使用nsarraycontroller排序 134
8 5 挑戰一 135
8 6 挑戰二 135
第9章 nsundomanager 139
9 1 nsinvocation 139
9 2 nsundomanager如何工作 140
9 3 給raiseman添加撤銷 142
9 4 key-value observing 145
9 5 撤銷修改 146
9 6 插入操作後立刻開始編輯 149
9 7 補充知識:視窗和撤銷管理器 151
第10章 archiving 153
10 1 nscoder和nscoding 154
編碼 154
解碼 156
10 2 文檔架構 157
info plist和nsdocumentcontroller 157
nsdocument 158
nswindowcontroller 161
10 3 保存和nskeyedarchiver 161
10 4 載入和nskeyedunarchiver 162
10 5 為檔案類型設定檔案擴展名和圖示 163
10 6 補充知識:防止死循環 166
10 7 補充知識:創建一個protocol 167
10 8 補充知識:不帶撤銷的document-based application 167
10 9 統一類型標識符(universal type Identifiers) 168
第11章 core data基本原理 171
11 1 nsmanagedobjectmodel 171
11 2 interface 173
創建並配置view 175
連線和綁定 177
11 3 core data是怎么工作的 180
第12章 nib檔案和nswindowcontroller 183
12 1 nspanel 183
12 2 給程式添加一個panel 184
設定選單項 186
appcontroller m 187
preferences nib 188
preferencecontroller m 192
12 3 補充知識:nsbundle 194
12 4 挑戰 195
第13章 user default 197
13 1 nsdictionary和nsmutabledictionary 198
nsdictionary 198
nsmutabledictionary 199
13 2 nsuserdefaults 200
不同類型的defaults的優先權 201
13 3 設定程式的標識符 202
13 4 命名defaults中的鍵 202
13 5 註冊defaults 203
13 6 讓用戶編輯defaults 203
13 7 使用defaults 205
禁止生成untitled documents 205
設定表格視圖的背景顏色 206
13 8 補充知識:nsuserdefaultscontroller 207
13 9 補充知識:使用command line來讀寫defaults 207
13 10 挑戰 208
第14章 使用notifications 209
14 1 什麼是notification 209
14 2 notifications不是什麼 210
14 3 nsnotification和nsnotificationcenter 210
14 4 傳送一個notification 212
14 5 註冊成為observer 213
14 6 處理接受到的notification 214
14 7 userinfo字典 214
14 8 補充知識:delegates和notifications 215
14 9 挑戰 216
第15章 使用alert panels 217
15 1 讓用戶確認刪除 218
15 2 挑戰 221
第16章 本地化 223
16 1 nib檔案的本地化 224
16 2 字元串表 226
創建字元串表 227
使用字元串表 229
16 3 補充知識:ibtool 230
16 4 補充知識:格式化字元串中符號的順序 231
第17章 自定義視圖 233
17 1 view的層次 233
17 2 讓view繪製自己 235
創建一個view 子類的對象 236
大小檢查 237
drawrect 238
17 3 使用nsbezierpath繪製 240
17 4 nsscrollview 242
17 5 通過程式創建view 245
17 6 補充知識:單元格 245
17 7 補充知識:isflipped 247
17 8 挑戰 248
第18章 image和滑鼠事件 249
18 1 nsresponder 249
18 2 nsevent 249
18 3 獲取滑鼠事件 251
18 4 使用nsopenpanel 251
修改nib檔案 252
編輯代碼 255
18 5 在view中合成一個圖像 256
18 6 view的坐標系統 258
18 7 autoscrolling 261
18 8 補充知識:nsimage 261
18 9 挑戰 262
第19章 鍵盤事件 263
19 1 nsresponder 265
19 2 nsevent 265
19 3 創建一個帶有自定義view的項目 266
界面布局 266
建立連線 267
編寫代碼 270
19 4 補充知識:rollovers 274
19 5 毛邊的藍色框 275
第20章 繪製帶屬性的文本 277
20 1 nsfont 277
20 2 nsattributedstring 278
20 3 繪製字元串和屬性字元串 280
20 4 顯示字母 281
20 5 讓你的view生成pdf數據 283
20 6 補充知識:nsfontmanager 286
20 7 挑戰1 286
20 8 挑戰2 286
第21章 貼上板和nil-targeted actions 287
21 1 貼上板 288
21 2 給bigletterview添加剪下、複製和貼上 289
21 3 nil-targeted actions 290
如何搜尋回響鏈 291
查看nib檔案 292
21 4 補充知識:哪個對象傳送了action訊息 293
21 5 補充知識:延遲複製 293
21 6 挑戰1 294
21 7 挑戰2 294
第22章 categories 295
22 1 給nsstring添加一個方法 295
22 2 補充知識:聲明私有方法 297
22 3 補充知識:protocol的非正式寫法 297
第23章 拖放 299
23 1 讓bigletterview成為一個拖動源 300
23 2 讓bigletterview成為拖動目的地 303
registerfordraggedtypes 304
添加高亮 304
實現dragging-destination方法 305
測試 306
23 3 補充知識:operation mask 307
第24章 nstimer 309
24 1 界面布局 311
24 2 創建連線 312
24 3 添加代碼到appcontroller 314
24 4 補充知識:nsrunloop 316
24 5 挑戰 316
第25章 工作表(sheet) 317
25 1 添加一個工作表 318
添加outlet和action 319
界面布局 319
添加代碼 323
25 2 補充知識:contextinfo 324
25 3 補充知識:模式視窗(modal windows) 325
第26章 創建nsformatter 327
26 1 一個基本格式化器 328
新建colorformatter h 329
修改nib檔案 329
nscolorlist 331
在字元串里搜尋子字元串 332
實現基本格式化器的方法 332
26 2 nscontrol的委託 334
26 3 檢查部分字元串 335
26 4 讓格式化器返回attributed字元串 337
第27章 列印 339
27 1 處理分頁 339
27 2 補充知識:現在是輸出到螢幕上么 344
27 3 挑戰 344
第28章 web service 345
28 1 amazone 346
28 2 界面布局 347
28 3 寫代碼 349
28 4 挑戰:添加一個webview 353
第29章 視圖切換 355
29 1 設計 356
開始 356
創建managedviewcontroller類 357
創建viewcontrollers和它們的nib檔案 358
添加視圖切換到mydocument 360
29 2 調整視窗大小 362
第30章 core data relationships 365
30 1 編輯模型 365
30 2 創建自定義nsmanagedobject類 366
employee 367
department 368
30 3 界面布局 369
departmentview nib 369
employeeview nib 371
30 4 事件和nextresponder 372
第31章 垃圾收集 375
31 1 非對象的數據類型 376
c的原始類型 376
core foundation 377
31 2 多項式示例 377
31 3 instruments 383
31 4 補充知識:弱引用 385
31 5 挑戰:試錯 385
第32章 core animation 387
32 1 創建calayer 388
32 2 使用calayer和caanimation 390
移除polynomials 392
同時移動多個層 393
調整層大小並重繪 393
calayer 394
第33章 一個簡單的cocoa/opengl應用程式 397
33 1 使用nsopenglview 397
33 2 寫程式 398
界面布局 399
寫代碼 402
第34章 nstask 405
34 1 多執行緒對多進程 405
34 2 zipspector 406
34 3 異步讀取 410
34 4 iping 411
34 5 挑戰: tar和 tgz檔案 415
第35章 結束 417
35 1 挑戰 418
索引 419
譯者序
作為個人PC時代開創者的蘋果,在過去的33年裡,歷經大起大落。而最近幾年,我們看到那個銳意創新的蘋果正踏著夢幻的腳步重新回到舞台的中心,再次站在潮流的頂點。對於用戶而言,蘋果總是能設計製造出非凡的產品勾起用戶的欲望,一次次用完美的細節打動用戶的心;對於程式設計師而言,Darwin的UNIX/BSD血統有著天然的親和力, 而Objective-C和Cocoa框架,則讓程式設計師認識了蘋果一流產品背後的技術實力。正是這些從硬體到系統、從語言到框架的多層次的長期積澱,讓蘋果能夠創造出如iPhone這樣的明星產品。
雖然蘋果電腦在美國一直有著不錯的市場占有率,但因為價格的關係,對於國內的用戶而言,它最多只能是多數人眼中的夢中情人而已。而這幾年匯率的變化,讓蘋果產品的性價比變得極為出色,OS X系統的占有率在穩步提升,如果算上iPhone的系統,國內OS X系統的擁有量已經相當可觀。因此放在國內來講,這個平台對程式設計師而言是一個全新的機會。但目前而言,這個平台上中文參考書確實匱乏,因此才有了這本書的翻譯。希望本書的翻譯出版能夠促進蘋果中文開發社區的進一步的發展,幫助更多的程式設計師了解蘋果的開發平台。
本書的作者Aaron Hillegass是Big nerd Ranch(一家專業的培訓機構)的專職培訓Cocoa的老師。這樣一個有著多年的實際教學經驗的作者寫出的書,再經過前兩版對內容的推敲,此書自然是一本久經考驗的入門必備好書。這本書剖析了很多關鍵內容的來龍去脈,既交代了原因,也分析了解決問題的思路,包括如何獲取資料、查看文檔,甚至於如何在社區提問等等,真正做到了授之以漁。
本書的第1至5章,第11至20章由陳勇翻譯,第28至35章由王健翻譯,剩下的由錢友才翻譯。
感謝許其峰和苗濤在本書翻譯過程中提供的幫助,另外還要感謝博文視點的徐定翔和白愛萍兩位編輯的細緻和耐心的工作,正是在他們的幫助下,初次接觸翻譯的我們才能順利完成任務,最後還要感謝本書原作者Aaron Hillegass伸出的援助之手,讓這本書得以儘快面世。
儘管翻譯過程中誠惶誠恐,生怕有辭不達意之失,更怕糟蹋了這本經典的Cocoa編程書籍,但囿於經驗和能力,書中的問題和疏漏在所難免,還請讀者能夠給予反饋,我們將維護一份勘誤表,並為您在學習本書過程中遇到的問題提供力所能及的幫助。
媒體評論
“Aaron的書是Mac OSX編程圖書的標桿——措辭優雅、精雕細琢,是Leopard開發的優秀圖書。”
———Scott Stevenson
“從零開始學習Cocoa的首選圖書。Aaron是少數(很可能是唯一)全職的專業Cocoa講師之一,他多年的教學經驗都濃縮在本書中。”
——Tim Burks,軟體工程師,Nu程式語言創始人
“如果你是UNIX或Windows的程式設計師,希望為Mac OS X開發一些新套用,或者想將套用移植到Mac上,那么這本書是必備的參考和培訓書。” ——Kevin H Spencer,Apple認證技術協調員