關(guān)于我們
書單推薦
新書推薦
|
Objective-C程序設(shè)計(jì)-第6版
《Objective-C程序設(shè)計(jì)》是為在蘋果iOS和OS X平臺(tái)上,使用Objective-C語言和面向?qū)ο蟪绦蛟O(shè)計(jì)模式進(jìn)行專業(yè)開發(fā)而編寫的簡潔、細(xì)致的入門讀物。本書假設(shè)讀者無面向?qū)ο蟪绦蛘Z言或C語言編程經(jīng)驗(yàn),以保障初學(xué)者與有經(jīng)驗(yàn)的程序員一樣,可用本書迅速和有效地學(xué)習(xí)Objective-C。本書提供的學(xué)習(xí)方法獨(dú)特,結(jié)合眾多程序示例及章末練習(xí),使得《Objective-C程序設(shè)計(jì)(第6版)》同時(shí)適合自學(xué)和課堂教學(xué)。第6版已全面更新,充分納入Objective-C的新功能與技術(shù),同時(shí)覆蓋對新版Xcode、iOS和Mac OS X Mavericks的介紹。
Objective-C已經(jīng)成為Mac OS X與iOS平臺(tái)上開發(fā)應(yīng)用程序的標(biāo)準(zhǔn)程序設(shè)計(jì)語言。這一簡單但強(qiáng)大的面向?qū)ο笳Z言是以C語言為基礎(chǔ)的。Objective-C除了可在Apple的操作系統(tǒng)平臺(tái)上使用外,也適用于其他的操作系統(tǒng),包括 Linux、UNIX 以及Windows。
本書是針對初學(xué)者編寫的一個(gè)完整又循序漸進(jìn)的Objective-C語言權(quán)威入門。閱讀本書,不需要先學(xué)過C語言或其他面向?qū)ο笳Z言。本書包含許多詳細(xì)且實(shí)用的范例,用來告訴你如何在實(shí)踐中運(yùn)用Objective-C。 本書第6版的內(nèi)容已全面更新,覆蓋新版iOS 、Xcode及OS X Mavericks等所有重要升級要點(diǎn)。 本書完整展示如何利用Foundation framework所提供的豐富自帶類庫(Library of classes),并對iOS 程序設(shè)計(jì)原理有所講解。
預(yù)覽目錄
1引言 1 第一部分Objective-C語言 2Objective-C編程 9 3類、對象和方法 29 4數(shù)據(jù)類型和表達(dá)式 53 5循環(huán)結(jié)構(gòu) 73 6選擇結(jié)構(gòu) 95 7類 129 8繼承 155 9多態(tài)、動(dòng)態(tài)類型和動(dòng)態(tài)綁定 181 10變量和數(shù)據(jù)類型 199 11分類和協(xié)議 223 12預(yù)處理程序 239 13基本的C語言特性 253 第二部分Foundation框架 14Foundation框架簡介 311 15數(shù)字、字符串和集合 315 16使用文件 379 17內(nèi)存管理和自動(dòng)引用計(jì)數(shù) 409 18復(fù)制對象 423 19歸檔 435 第三部分Cocoa、Cocoa Touch與iOS的SDK 20Cocoa和Cocoa Touch簡介 453 21編寫iOS應(yīng)用程序 457 附錄A術(shù)語表 489 附錄B地址簿示例源代碼 501 目錄 1引言 1 1.1 本書內(nèi)容 2 1.2 本書組織方式 3 1.3 支持 5 1.4 致謝 6 1.5 第6版前言 7 第一部分Objective-C語言 2Objective-C編程 9 2.1 編譯并運(yùn)行程序 9 2.1.1 使用Xcode 10 2.1.2 使用Terminal 17 2.2 解釋第一個(gè)程序 20 2.3 顯示變量的值 24 2.4 小結(jié) 26 2.5 練習(xí) 27 3類、對象和方法 29 3.1 到底什么是對象 29 3.2 實(shí)例和方法 30 3.3 用于處理分?jǐn)?shù)的Objective-C類 32 3.4 @interface部分 35 3.4.1 選擇名稱 35 3.4.2 類方法和實(shí)例方法 37 3.5 @implementation部分 39 3.6 program部分 41 3.7 實(shí)例變量的訪問及數(shù)據(jù)封裝 47 3.8 小結(jié) 51 3.9 練習(xí) 51 4數(shù)據(jù)類型和表達(dá)式 53 4.1 數(shù)據(jù)類型和常量 53 4.1.1 int類型 53 4.1.2 float類型 54 4.1.3 char類型 54 4.1.4 限定詞:long、long long、short、unsigned及signed 55 4.1.5 id類型 56 4.2 算術(shù)表達(dá)式 57 4.2.1 運(yùn)算符的優(yōu)先級 57 4.2.2 整數(shù)運(yùn)算和一元負(fù)號運(yùn)算符 60 4.2.3 模運(yùn)算符 62 4.2.4 整型值和浮點(diǎn)值的相互轉(zhuǎn)換 63 4.2.5 類型轉(zhuǎn)換運(yùn)算符 65 4.3 賦值運(yùn)算符 66 4.4 Calculator類 67 4.5 練習(xí) 70 5循環(huán)結(jié)構(gòu) 73 5.1 for語句 74 5.1.1 鍵盤輸入 81 5.1.2 嵌套的for循環(huán) 83 5.1.3 for循環(huán)的變體 85 5.2 while語句 86 5.3 do語句 90 5.4 break語句 92 5.5 continue語句 92 5.6 小結(jié) 93 5.7 練習(xí) 93 6選擇結(jié)構(gòu) 95 6.1 if語句 95 6.1.1 if-else結(jié)構(gòu) 100 6.1.2 復(fù)合條件測試 103 6.1.3 嵌套的if語句 106 6.1.4 else if結(jié)構(gòu) 107 6.2 switch語句 117 6.3 Boolean變量 120 6.4 條件運(yùn)算符 125 6.5 練習(xí) 127 7類 129 7.1 分離接口和實(shí)現(xiàn)文件 129 7.2 合成存取方法 135 7.3 使用點(diǎn)運(yùn)算符訪問屬性 137 7.4 具有多個(gè)參數(shù)的方法 139 7.4.1 不帶參數(shù)名的方法 141 7.4.2 關(guān)于分?jǐn)?shù)的操作 141 7.5 局部變量 145 7.5.1 方法的參數(shù) 146 7.5.2 static關(guān)鍵字 147 7.6 self關(guān)鍵字 150 7.7 在方法中分配和返回對象 151 7.7.1 擴(kuò)展類的定義和接口文件 153 7.8 練習(xí) 153 8繼承 155 8.1 一切從根類開始 155 8.1.1 找出正確的方法 159 8.2 通過繼承來擴(kuò)展:添加新方法 160 8.2.1 Point類和對象創(chuàng)建 164 8.2.2 @class指令 165 8.2.3 具有對象的類 169 8.3 覆寫方法 173 8.3.1 選擇哪種方法 174 8.4 抽象類 177 8.5 練習(xí) 178 9多態(tài)、動(dòng)態(tài)類型和動(dòng)態(tài)綁定 181 9.1 多態(tài):相同的名稱,不同的類 181 9.2 動(dòng)態(tài)綁定和id類型 184 9.3 編譯時(shí)和運(yùn)行時(shí)檢查 186 9.4 id數(shù)據(jù)類型與靜態(tài)類型 187 9.4.1 動(dòng)態(tài)類型的參數(shù)和返回類型 188 9.5 有關(guān)類的問題 189 9.6 使用@try處理異常 194 9.7 練習(xí) 196 10變量和數(shù)據(jù)類型 199 10.1 對象的初始化 199 10.2 作用域回顧 203 10.2.1 關(guān)于屬性、存取方法和實(shí)例變量 203 10.2.2 全局變量 204 10.2.3 靜態(tài)變量 206 10.3 枚舉數(shù)據(jù)類型 208 10.4 typedef語句 212 10.5 數(shù)據(jù)類型轉(zhuǎn)換 213 10.5.1 轉(zhuǎn)換規(guī)則 213 10.6 位運(yùn)算符 215 10.6.1 按位與運(yùn)算符 216 10.6.2 按位或運(yùn)算符 217 10.6.3 按位異或運(yùn)算符 218 10.6.4 一次求反運(yùn)算符 218 10.6.5 向左移位運(yùn)算符 220 10.6.6 向右移位運(yùn)算符 221 10.7 練習(xí) 221 11分類和協(xié)議 223 11.1 分類 223 11.2 類的擴(kuò)展 228 11.2.1 關(guān)于分類的注意事項(xiàng) 229 11.3 協(xié)議和代理 230 11.3.1 代理 233 11.3.2 非正式協(xié)議 234 11.4 合成對象 235 11.5 練習(xí) 236 12預(yù)處理程序 239 12.1 #define語句 239 12.1.1 更高級的定義類型 241 12.2 #import語句 246 12.3 條件編譯 247 12.3.1 #ifdef、#endif、#else和#ifndef語句 248 12.3.2 #if和#elif預(yù)處理程序語句 250 12.3.3 #undef語句 251 12.4 練習(xí) 251 13基本的C語言特性 253 13.1 數(shù)組 254 13.1.1 數(shù)組元素的初始化 256 13.1.2 字符數(shù)組 257 13.1.3 多維數(shù)組 258 13.2 函數(shù) 260 13.2.1 參數(shù)和局部變量 262 13.2.2 函數(shù)的返回結(jié)果 263 13.2.3 函數(shù)、方法和數(shù)組 267 13.3 塊(Blocks) 268 13.4 結(jié)構(gòu) 272 13.4.1 結(jié)構(gòu)的初始化 275 13.4.2 結(jié)構(gòu)中的結(jié)構(gòu) 276 13.4.3 關(guān)于結(jié)構(gòu)的補(bǔ)充細(xì)節(jié) 278 13.4.4 不要忘記面向?qū)ο缶幊趟枷?279 13.5 指針 279 13.5.1 指針和結(jié)構(gòu) 283 13.5.2 指針、方法和函數(shù) 285 13.5.3 指針和數(shù)組 287 13.5.4 指針運(yùn)算 297 13.5.5 指針和內(nèi)存地址 299 13.6 它們不是對象 299 13.7 其他語言特性 300 13.7.1 復(fù)合字面量 300 13.7.2 goto語句 301 13.7.3 空語句 301 13.7.4 逗號運(yùn)算符 301 13.7.5 sizeof運(yùn)算符 302 13.7.6 命令行參數(shù) 303 13.8 工作原理 305 13.8.1 事實(shí)#1:實(shí)例變量存儲(chǔ)在結(jié)構(gòu)中 306 13.8.2 事實(shí)#2:對象變量實(shí)際上是指針 306 13.8.3 事實(shí)#3:方法是函數(shù),而消息表達(dá)式是函數(shù)調(diào)用 307 13.8.4 事實(shí)#4:id類型是通用指針類型 307 13.9 練習(xí) 307 第二部分Foundation框架 14Foundation框架簡介 311 14.1 Foundation文檔 311 15數(shù)字、字符串和集合 315 15.1 數(shù)字對象 315 15.2 字符串對象 321 15.2.1 NSLog函數(shù) 321 15.2.2 description方法 322 15.2.3 可變對象與不可變對象 323 15.2.4 可變字符串 330 15.3 數(shù)組對象 336 15.3.1 制作地址簿 341 15.3.2 數(shù)組排序 358 15.4 詞典對象 364 15.4.1 枚舉詞典 366 15.5 集合對象 369 15.5.1 NSIndexSet 373 15.6 練習(xí) 375 16使用文件 379 16.1 管理文件和目錄:NSFileManager 380 16.1.1 使用NSData類 385 16.1.2 使用目錄 386 16.1.3 枚舉目錄中的內(nèi)容 389 16.2 使用路徑:NSPathUtilities.h 391 16.2.1 常用的路徑處理方法 394 16.2.2 復(fù)制文件和使用NSProcessInfo類 396 16.3 基本的文件操作:NSFileHandle 400 16.4 NSURL類 405 16.5 NSBundle類 406 16.6 練習(xí) 407 17內(nèi)存管理和自動(dòng)引用計(jì)數(shù) 409 17.1 自動(dòng)垃圾收集 411 17.2 手工管理內(nèi)存計(jì)數(shù) 411 17.2.1 對象引用和自動(dòng)釋放池 412 17.3 事件循環(huán)和內(nèi)存分配 414 17.4 手工內(nèi)存管理規(guī)則的總結(jié) 416 17.5 自動(dòng)引用計(jì)數(shù)(ARC) 417 17.6 強(qiáng)變量 418 17.7 弱變量 419 17.8 @autoreleasepool塊 420 17.9 方法名和非ARC編譯代碼 420 18復(fù)制對象 423 18.1 copy和mutableCopy方法 424 18.2 淺復(fù)制與深復(fù)制 426 18.3 實(shí)現(xiàn) 18.4 用設(shè)值方法和取值方法復(fù)制對象 431 18.5 練習(xí) 433 19歸檔 435 19.1 使用XML屬性列表進(jìn)行歸檔 435 19.2 使用NSKeyedArchiver歸檔 437 19.3 編碼方法和解碼方法 439 19.4 使用NSData創(chuàng)建自定義檔案 446 19.5 使用歸檔程序復(fù)制對象 450 19.6 練習(xí) 451 第三部分Cocoa、Cocoa Touch與iOS的SDK 20Cocoa和Cocoa Touch簡介 453 20.1 框架層 453 20.2 Cocoa Touch 454 21編寫iOS應(yīng)用程序 457 21.1 iOS SDK 457 21.2 第一個(gè)iPhone應(yīng)用程序 457 21.2.1 創(chuàng)建新的iPhone應(yīng)用程序項(xiàng)目 460 21.2.2 輸入代碼 463 21.2.3 設(shè)計(jì)界面 466 21.3 iPhone分?jǐn)?shù)計(jì)算器 474 21.3.1 啟動(dòng)新的Fraction_Calculator項(xiàng)目 475 21.3.2 定義視圖控制器 476 21.3.3 Fraction類 481 21.3.4 處理分?jǐn)?shù)的Calculator類 485 21.3.5 設(shè)計(jì)UI 486 21.4 小結(jié) 487 21.5 練習(xí) 488 附錄A術(shù)語表 489 附錄B地址簿示例源代碼 501
C程序設(shè)計(jì)語言是由AT&T貝爾實(shí)驗(yàn)室的Dennis Ritchie于20世紀(jì)70年代早期首創(chuàng)的。但是,直到20世紀(jì)70年代晚期,這種程序設(shè)計(jì)語言才獲得了廣泛的支持并流行開來。因?yàn)樵诖酥,C編譯器還不能用于貝爾實(shí)驗(yàn)室以外的商業(yè)用途。最初,UNIX操作系統(tǒng)有可能更快的普及速度也在某種程度上促進(jìn)了C語言的快速普及,UNIX操作系統(tǒng)幾乎完全是由C語言編寫的。
Brad J.Cox在20世紀(jì)80年代早期設(shè)計(jì)了Objective-C語言,它以一種叫作SmallTalk-80的語言為基礎(chǔ)。Objective-C在C語言的基礎(chǔ)上加了一層,這意味著對C進(jìn)行了擴(kuò)展,從而創(chuàng)造出一門新的程序設(shè)計(jì)語言,支持對象的創(chuàng)建和操作。 1988年,NeXT計(jì)算機(jī)公司獲得了Objective-C語言的授權(quán),并發(fā)展了Objective-C的語言庫和一個(gè)開發(fā)環(huán)境,即NEXTSTEP。1992年,自由軟件基金會(huì)的GNU開發(fā)環(huán)境增加了對Objective-C的支持。所有Free Software Foundation(FSF)產(chǎn)品的版權(quán)歸FSF所有。它以GNU通用公共許可證來發(fā)布產(chǎn)品。 1994年,NeXT計(jì)算機(jī)公司 和Sun公司聯(lián)合發(fā)布了一個(gè)針對NEXTSTEP系統(tǒng)的標(biāo)準(zhǔn)規(guī)范,名為OPENSTEP。OPENSTEP在FSF’s的實(shí)現(xiàn)名稱為GNUStep。有一個(gè)Linux版本,它包括Linux內(nèi)核和GNUStep開發(fā)環(huán)境,這個(gè)Linux發(fā)行版被十分貼切地命名為LinuxSTEP。 1996年12月20日,蘋果公司宣布收購NeXT軟件公司,NEXTSTEP/OPENSTEP環(huán)境將成為蘋果操作系統(tǒng)下一個(gè)主要發(fā)行版本OS X的基礎(chǔ)。這個(gè)開發(fā)環(huán)境的版本被蘋果公司稱為Cocoa。它內(nèi)置了對Objective-C語言的支持,并結(jié)合了Project Builder(或它的后繼版本Xcode)和Interface Builder等開發(fā)工具,蘋果公司為Mac OS X上的應(yīng)用程序開發(fā)創(chuàng)建了一個(gè)功能強(qiáng)大的開發(fā)環(huán)境。 2007年,蘋果公司發(fā)布了Objective-C語言的升級版,并稱為Objective-C 2.0。本書第2版已涵蓋了該版本語言的內(nèi)容。 當(dāng)iPhone于2007年發(fā)布時(shí),開發(fā)人員們要求為這款革新性的設(shè)備開發(fā)應(yīng)用程序。起初,蘋果公司不歡迎第三方應(yīng)用程序開發(fā)。蘋果公司安撫那些超級崇拜iPhone的開發(fā)人員的辦法,就是允許他們開發(fā)基于Web的應(yīng)用。這些基于Web的應(yīng)用在iPhone內(nèi)置的Safari Web瀏覽器下運(yùn)行,但需要用戶連接到托管該應(yīng)用程序的網(wǎng)站;赪eb應(yīng)用的很多固有限制,開發(fā)人員對此非常不滿,于是蘋果公司不久之后就宣布,開發(fā)人員能夠?yàn)閕Phone開發(fā)所謂的本機(jī)應(yīng)用。 本機(jī)應(yīng)用是駐留在iPhone上并且在iPhone操作系統(tǒng)下運(yùn)行的應(yīng)用,其運(yùn)行方式與該設(shè)備上運(yùn)行的內(nèi)置iPhone應(yīng)用(如Contacts、Stocks和Weather)相同。iPhone的操作系統(tǒng)實(shí)際上是某個(gè)OS X版本,這意味著可以在MacBook Pro上開發(fā)并調(diào)試這些應(yīng)用。實(shí)際上,蘋果公司很快就提供了強(qiáng)大的軟件開發(fā)套件(SDK),允許快速開發(fā)iPhone應(yīng)用并進(jìn)行調(diào)試。iPhone模擬器使得開發(fā)人員能夠直接在開發(fā)系統(tǒng)上調(diào)試其應(yīng)用,而無須在真機(jī)設(shè)備上進(jìn)行。 隨著2010年iPad的推出,蘋果公司開始統(tǒng)一操作系統(tǒng)上使用的術(shù)語和SDK,以支持使用不同尺寸的物理屏幕和屏幕分辨率的各種設(shè)備。在本書寫作時(shí)已能夠通過iOS SDK為各種iOS設(shè)備開發(fā)應(yīng)用程序,當(dāng)前發(fā)布的操作系統(tǒng)版本為iOS 7。 1.1 本書內(nèi)容 在計(jì)劃編寫這本有關(guān)Objective-C的圖書時(shí),我必須做出一些基本的決策。和其他介紹Objective-C的內(nèi)容一樣,可以假定讀者已經(jīng)知道如何編寫C語言程序?梢詮氖褂秘S富的例程庫(例如,F(xiàn)oundation框架和UIKit框架)的角度介紹這門語言。介紹如何使用一些開發(fā)工具(如Mac的Xcode和設(shè)計(jì)UI使用的Interface Builder等)。 但是采用這種方式有一些問題:首先,學(xué)習(xí)Objective-C之前必須完整地學(xué)習(xí)C語言,這種說法是錯(cuò)誤的。C語言是一門過程性的編程語言,有很多特性是在使用Objective-C進(jìn)行程序設(shè)計(jì)時(shí)不必要的,特別是對于初學(xué)者。事實(shí)上,采用其中的某些特性違反了堅(jiān)持良好的面向?qū)ο蟮某绦蛟O(shè)計(jì)方法的本質(zhì)。同樣,在學(xué)習(xí)面向?qū)ο蟮木幊陶Z言之前,最好不要了解過程性語言的所有細(xì)節(jié)。這會(huì)導(dǎo)致程序員誤入歧途,并在養(yǎng)成良好的面向?qū)ο蟮某绦蛟O(shè)計(jì)風(fēng)格方面造成錯(cuò)誤的導(dǎo)向和思維定式。Objective-C是C語言的擴(kuò)展,但這并不意味著必須首先學(xué)習(xí)C語言。 因此,我既不首先講述C語言,也不事先假定你具備了該語言的知識。相反,我決定采用一種非常規(guī)的方式,從面向?qū)ο缶幊痰囊暯浅霭l(fā),將Objective-C和基礎(chǔ)的C語言作為一門單獨(dú)的集成語言來講解。顧名思義,本書的目的是教你如何使用Objective-C 進(jìn)行程序設(shè)計(jì)。這并不表示我會(huì)詳細(xì)介紹可用于開發(fā)和調(diào)試程序的工具,或者講解如何開發(fā)交互式圖形應(yīng)用。學(xué)會(huì)如何使用Objective-C編寫程序后,所有的這些資料都可在其他地方獲得。事實(shí)上,你會(huì)發(fā)現(xiàn)在具備了如何使用Objective-C進(jìn)行程序設(shè)計(jì)的堅(jiān)實(shí)基礎(chǔ)后,掌握這些知識是輕而易舉的。本書并不假設(shè)讀者需要編程經(jīng)驗(yàn),即使有,也不會(huì)很多。如果你是一名程序設(shè)計(jì)的初學(xué)者,通過一些努力,你應(yīng)該可以將Objective-C作為第一門程序設(shè)計(jì)語言。根據(jù)本書前幾版的反饋,其他讀者已經(jīng)做到了。 本書以示例的方式講述Objective-C語言。在介紹這門語言的每個(gè)新特性時(shí),通常會(huì)提供一個(gè)完整的小例子來闡述這一特性。正如“一圖勝千言”一樣,一個(gè)經(jīng)過嚴(yán)格篩選的例子也有如此功效。強(qiáng)烈建議運(yùn)行每個(gè)程序,并比較系統(tǒng)中獲得的結(jié)果與本書中的結(jié)果。這么做,你不僅可以學(xué)會(huì)Objective-C語言及其語法,而且還能熟悉編譯和運(yùn)行Objective-C程序的過程。 1.2 本書組織方式 本書從邏輯上分為三部分:第一部分(第1~13章)是“Objective-C語言”,介紹該語言的基礎(chǔ)知識。第二部分(第14~19章)是“Foundation框架”,講述如何使用構(gòu)成Foundation框架的種類豐富的預(yù)定義。第三部分(第20、21章)是“Cocoa、Cocoa Touch和iOS SDK”,簡要介紹Cocoa和Cocoa Touch框架,然后逐步演示如何使用iOS SDK開發(fā)簡單的iOS應(yīng)用。 框架就是一組從邏輯上組合在一起的類和例程,它們使開發(fā)程序變得更加容易。使用Objective-C進(jìn)行程序設(shè)計(jì)時(shí)需要的許多能力都來源于大量可用的框架。 第2章“Objective-C編程”,首先講述如何使用Objective-C編寫第一個(gè)程序。 因?yàn)楸緯⒎侵饕v解Cocoa或者iOS程序設(shè)計(jì),所以在第三部分之前沒有過多地介紹圖形用戶界面(GUI),甚至很少提及它。這就需要使用一種方法實(shí)現(xiàn)程序輸入并產(chǎn)生輸出。本書中的大多數(shù)例子都是從鍵盤獲得輸入,并在一個(gè)窗口中產(chǎn)生輸出的:如果在命令行中,那么這個(gè)窗口是Terminal窗口;如果使用Xcode,那么這個(gè)窗口是調(diào)試輸出窗口。 第3章“類、對象和方法”,介紹了面向?qū)ο蟪绦蛟O(shè)計(jì)的基礎(chǔ)。本章引入了一些術(shù)語,但數(shù)量控制到了最少。另外還介紹了定義類的機(jī)制,以及向?qū)嵗驅(qū)ο蟀l(fā)送消息的方式。教師或者有經(jīng)驗(yàn)的Objective-C程序員將會(huì)注意到,本書使用靜態(tài)類型聲明對象。我認(rèn)為這種方法是學(xué)生起步的最好方式,因?yàn)榫幾g器能捕捉更多的錯(cuò)誤,程序有更強(qiáng)的自文檔化(self-documenting)功能,同時(shí)還能鼓勵(lì)新程序員顯式地聲明已知的數(shù)據(jù)類型。這樣,id類型的概念及其強(qiáng)大功能直到第9章“多態(tài)、動(dòng)態(tài)類型和動(dòng)態(tài)綁定”才會(huì)完全展現(xiàn)出來。 第4章“數(shù)據(jù)類型和表達(dá)式”,描述了基本的Objective-C數(shù)據(jù)類型,以及如何在程序中使用它們。 第5章“循環(huán)結(jié)構(gòu)”,介紹了在程序中可以使用的3種循環(huán)語句,即for、while和do。 第6章“選擇結(jié)構(gòu)”,詳細(xì)講述了Objective-C語言的if和switch語句。判斷語句是任何計(jì)算機(jī)程序設(shè)計(jì)語言的基礎(chǔ)。 第7章“類”,更深入地研究了類和對象的使用,詳細(xì)討論了方法、方法的多個(gè)參數(shù)及局部變量的相關(guān)內(nèi)容。 第8章“繼承”,介紹了繼承的主要概念。這一特性使得程序更容易開發(fā),因?yàn)槲覀兛梢岳靡郧熬帉懙拇a,使用繼承及子類的概念可以方便地修改和擴(kuò)展現(xiàn)有的類定義。 第9章討論了Objective-C語言的3個(gè)重要特性。多態(tài)、動(dòng)態(tài)類型及動(dòng)態(tài)綁定是本章的關(guān)鍵概念。 第10章至第13章對Objective-C進(jìn)行了深入討論,既包含對象的初始化、區(qū)塊、協(xié)議、分類、預(yù)處理程序,還包括一些基本的C語言特性,如函數(shù)、數(shù)組、結(jié)構(gòu)和指針。第一次開發(fā)面向?qū)ο蟮某绦驎r(shí),通常不必(最好避免)使用這些特性。建議你首次通讀本書時(shí)略過第13章,只在需要更多地了解這門語言的特殊特性時(shí),再回來學(xué)習(xí)它。 第二部分從第14章開始,這部分介紹Foundation框架,以及如何使用它的大量文檔。 第15章至第19章講解了Foundation框架的重要特性,包括數(shù)字和字符串對象、集合、文件系統(tǒng)、內(nèi)存管理及對象的復(fù)制和歸檔。 學(xué)習(xí)完第二部分后,你將能夠使用Foundation框架開發(fā)出相當(dāng)復(fù)雜的Objective-C程序。 第三部分從第20章“Cocoa和Cocoa Touch簡介”開始,本章簡要介紹了框架,它提供了在Mac和iOS設(shè)備上開發(fā)復(fù)雜圖形應(yīng)用所需的各種類。 第21章介紹了iOS SDK和UIKit框架。本章闡述了如何以迭代的方式編寫簡單的iOS應(yīng)用,然后列舉了一個(gè)計(jì)算器應(yīng)用的示例,通過它可使用iPhone進(jìn)行簡單的分?jǐn)?shù)算術(shù)運(yùn)算。 因?yàn)槊嫦驅(qū)ο蟮挠谜Z涉及大量術(shù)語,所以本書附錄A提供了一些常用術(shù)語的定義。 附錄B“地址簿示例源代碼”,給出了本書第二部分中開發(fā)并大量使用的兩個(gè)類的源代碼。這些類定義了地址卡和地址簿類,其中的方法提供了一些簡單的操作,如在地址簿中添加和刪除地址卡、查找某人、列出地址簿的內(nèi)容等。 學(xué)會(huì)如何編寫Objective-C程序后,可以繼續(xù)向幾個(gè)不同的方向發(fā)展。你可能希望學(xué)習(xí)有關(guān)C語言的更多內(nèi)容,或開始編寫在OS X上運(yùn)行的Cocoa程序,或者你可能想開發(fā)更復(fù)雜的iOS應(yīng)用。 1.3支持 讀者可在classroomM.com/objective-c論壇查找到更加豐富的內(nèi)容,可以獲取到一些源代碼(這里并不能找到所有例子的“官方”源代碼,本人堅(jiān)信學(xué)習(xí)過程的最大一部分在于自己輸入例子中的程序,并且學(xué)習(xí)如何判斷和修正錯(cuò)誤)、練習(xí)的答案、勘誤表和測驗(yàn)題;也可以向我或其他論壇中的成員提問題。這個(gè)論壇有積極的成員,他們樂于幫助其他成員解決疑問,并且答復(fù)一些問題,使之變成內(nèi)容豐富的社區(qū)。請加入并參與進(jìn)來吧! 1.4 致謝 我要感謝在本書第 1 版的準(zhǔn)備階段為我提供幫助的朋友們。首先,要感謝Tony Iannino和Steven Levy對原稿的審閱,并感謝Mike Gaines對本書的貢獻(xiàn)。 其次,還要感謝本書的技術(shù)編輯Jack Purdum(第1版),Wendy Mui(第3版)和Mike Trent(第1,2,5,6版)。我格外地幸運(yùn),因?yàn)镸ike審閱了本書的兩個(gè)版本,他對我編寫的本書前兩版都進(jìn)行了最詳細(xì)的審閱,不僅指出了書中的不足之處,而且還十分慷慨地提出了建議。正是因?yàn)镸ike對第1版提供的意見,我改變了介紹內(nèi)存管理的方法,并盡力確保本書中的每個(gè)示例都是“無漏洞的”。在第4版之前,內(nèi)存管理是比較重要的內(nèi)容,但引入ARC后,這部分內(nèi)容變得過時(shí)了。Mike還為有關(guān)iPhone程序設(shè)計(jì)的章節(jié)做出了很多貢獻(xiàn)。 在第1版中,Catherine Babin提供了封面的圖片,他還提供了許多有價(jià)值的圖片供我選擇。朋友為我制作的封面的藝術(shù)效果,使得本書具有更強(qiáng)的專業(yè)性。 我非常感謝Pearson的Mark Taber(所有的版本),他忍受了我的推遲交稿,并且非常和藹地讓我按照自己的進(jìn)度工作。同樣的榮譽(yù)給皮爾遜的Mandie Frank。Mandie為我的延遲交付不知疲倦地工作,以幫助本書的各種版本及時(shí)出版。我非常感謝Michael de Haan和Wendy Mui不可思議地主動(dòng)要求完成校對第2版的工作。 注意 正如先前介紹的,Dennis Ritchie發(fā)明了C語言,他也是UNIX操作系統(tǒng)的共同發(fā)明者,這是OS X和iOS的基礎(chǔ)。但遺憾的是,2011年,在一個(gè)星期內(nèi)這個(gè)世界失去了Dennis Ritchie和Steve Jobs。這兩位對我的職業(yè)生涯有重大的影響。如果沒有他們,這本書也就不存在。 最后,我要感謝classroomM.com/objective-c論壇的會(huì)員對我的反饋、支持和鼓勵(lì)。 1.5 第6版前言 上個(gè)版本沒有多少變化。由于Xcode 5的引入,所有的截圖已被更新。我這樣做是為了讓新手也能跟隨當(dāng)前截圖,不至于在學(xué)習(xí)之前迷茫!有一些語言細(xì)節(jié)的增加,也已反映在此版中。 Stephen G.Kochan 2013年10月
你還可能感興趣
我要評論
|