瘋狂iOS講義(提高篇) ( 簡體 字) |
作者:李剛 | 類別:1. -> 程式設計 -> 手機程式 -> iPhone |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 44968 詢問書籍請說出此書號!【缺書】 NT售價: 495 元 |
出版日:8/1/2016 |
頁數:588 |
光碟數:1 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121297007 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:前 言
本書基于《瘋狂iOS講義(下)》升級而來,已真正升級成Swift、Objective-C雙語講解。本書所有案例全部提供Swift、Objective-C兩個語言的版本。讀者通過本書可以同時掌握Swift、Objective-C兩種語言的開發能力。 書中詳細介紹了《貪食蛇》《打飛機》《天氣預報》《XMPP即時通信客戶端》《瘋狂軟件商城App》等大量精彩的iOS App的開發,本書不僅細致地介紹了開發這些應用所需的基礎知識,而且真正帶領讀者從零開始,逐步完成這些應用。如果讀者認真學完本書,并掌握了書中內容,將可以完全勝任iOS應用開發。 雖然本書的知識點足夠深入、實用,但對于已經掌握《瘋狂iOS講義(基礎篇)》的讀者來說,本書的知識依然很容易看懂、理解,并很容易動手做出來。只要讀者真正對書中的應用感興趣,并愿意扎扎實實地動手實踐,完全可以很好地學會、掌握書中這些知識點。 有些讀者可能會被市面上某些薄薄的圖書所吸引:他們以為閱讀一本薄薄的圖書更容易掌握這門技術。但實際上,無論你學還是不學,技術就在那里;無論作者寫還是不寫,技術就在那里。如果一本技術圖書太過單薄,可能有以下三種情況: ? 技術本身就簡單,只要簡單介紹即可。 ? 技術并不簡單,但圖書只介紹了該技術的皮毛,讀者學起來很輕松,但實際開發時就感覺“書到用時方恨少”。 ? 技術并不簡單,該圖書高度概括、提綱挈領地歸納該技術的要點。 iOS開發絕不是三言兩語就可以說清的一門技術,而《瘋狂iOS講義》并不打算只是提綱挈領地歸納該技術的要點,而是力求全面、細致地介紹iOS開發的相關內容,包括Objective-C語法介紹和iOS應用開發,尤其是iOS應用開發部分,本身包含的知識點確實比較多,讀者只有全面掌握這些內容,才能真正在企業iOS開發崗位上游刃有余。 可能有人會覺得提綱挈領的書看上去壓力沒那么大,這其實是一個假象,如果僅憑某些提綱挈領的要點歸納就可以掌握一門開發技術,那只能說明其悟性很好(或有很強的技術功底),如果真是這樣,那么看一本全面、細致的圖書應該更易理解;反過來,如果覺得《瘋狂iOS講義》內容太多,不容易掌握,反而希望通過某些提綱挈領的要點歸納即可掌握這門開發技術,那更不現實——詳細的書都不容易掌握,僅憑一些提綱挈領的要點歸納反而能學會? 寫一本全面、系統的圖書比寫一本薄薄的書辛苦多了!如果只是寫一本薄薄的書,可以隨便介紹點常見的知識,加點例子就行了。但如果打算全面、系統地講清楚一門技術,就需要高屋建瓴地把握整個技術的大綱,并理清各知識點之間的關聯,然后還需要逐個介紹每個知識點的細節。 本書創作感言 多年過去以后,瘋狂系列圖書用事實證明:國內圖書的質量,其實也可以很好,關鍵在于作者是否愿意付出全部心血去創作一本圖書。《瘋狂Android講義》《瘋狂Java講義》《輕量級Java EE企業應用實戰》這些圖書在亞馬遜、京東、當當等網店的銷量排行榜的事實證明了國內原創圖書更適合中國開發者。 但總有些人說:還是國外的書更好——這里無意貶低國外引進的優秀圖書。無論國外還是國內都可以產生優秀的圖書,根據區域劃分圖書質量本身就是簡單、粗暴的。國外作者固然創作了大量優秀的技術圖書,但國內同樣有一些作者在努力堅持。 “還是國外的書好”這句話之所以有人說,無非有兩個原因: ? 從整體質量來看,國內原創的、優秀的圖書數量確實比國外的優秀圖書數量少——因此從統計學的角度來看,“還是國外的書好”這句話有一定的道理。 ? 從心理學分析,說這句話的人往往是嫉妒:這些人覺得自己很行,但要么不能創作圖書,要么創作的圖書市場反映很差。這些人為了找回心理的平衡,不斷地告訴自己:國內圖書都很差,這樣就可以把失敗的原因歸咎于所處的環境,同時又可打壓周圍的優秀者,從而獲得心理安慰。 無論上面哪種原因,其實都應該成為國內程序員奮斗的動力。正因為國內原創的、優秀的圖書數量較少,所以我們更應該努力,因為我們也是“國內程序員”的成員,提高國內軟件行業的水平,提高國內原創、優秀圖書的數量,國內每個軟件從業人員責無旁貸。 心懷嫉妒的人,身邊總是無處不在:在這些人口中,張三做的某某事很容易,李四做的某某事很容易,但這些人自己啥也不做。對于技術圖書的作者而言,既不需要政府背景,也沒有資金準入門檻,唯一的要求是掌握這門技術,并愿意努力介紹它——積極的人,應該通過努力把事情做好來證明自己,而不是通過語言否定別人來證明自己。 當然,如果有人堅持認為:國外圖書具有更好的“思想”,那么他勝了——因為“思想”這東西,太難說清了,而本書只是一本介紹編程的工具書,并不是一本“形而上”的哲學書。如果讀者想學習Swift或Objective-C編程,想在iPhone、iPad上開發應用,可以選擇本書;如果讀者想通過編程進而悟道、領悟人生哲學,應該放棄選擇本書。 本書有什么特點 本書以《瘋狂iOS講義(基礎篇)》為基礎,因此本書不包含Objective-C語法、iOS界面編程、圖形圖像處理等基礎知識。 本書包含多點觸摸與手勢處理、應用國際化、數據存儲、SQLite數據庫與Core Data、iOS多媒體開發、加速計和陀螺儀、多線程、網絡編程、XMPP即時通信、定位、地圖、推送機制、iCloud服務等內容,本書還穿插介紹了各種實用的iOS App。 認真看完本書,把書中所有實例都練習一遍,本書帶給你的只是9個字:“看得懂、學得會、做得出”。本書不能讓你認識一堆新名詞,只會讓你學會實際的iOS應用開發。 本書還具有如下幾個特點: 1.知識全面,覆蓋面廣 不得不說,本書是市面上所有iOS圖書中內容較為全面、體系龐大的。本書基礎篇、提高篇全方位地涵蓋了Objective-C語法、iOS開發基礎知識、iOS開發高級知識等內容。這些知識將帶領讀者從零開始,逐步掌握iOS開發的基礎,直至步入iOS開發殿堂。 2.內容實際,實用性強 本書并不局限于枯燥的理論介紹,而是采用了“項目驅動”的方式來講授知識點,全書近百個實例,幾乎每個知識點都可找到對應的參考實例。還提供了《貪食蛇》《打飛機》《天氣預報》《XMPP即時通信客戶端》《瘋狂軟件商城App》等真實的應用,具有極高的參考價值。 3.講解詳細,上手容易 本書保持了“瘋狂系列”的一貫風格:操作步驟詳細、編程思路清晰、語言平實。只要讀者有學習的決心和毅力,認真掌握本書基礎篇、提高篇的知識,即可完全勝任實際企業中 iOS開發者的要求。 不管怎樣,只要讀者在閱讀本書時遇到知識上的問題,都可以登錄瘋狂Java聯盟(http://www.crazyit.org)與廣大學習者交流,筆者也會通過該平臺與大家一起交流、學習。 本書寫給誰看 如果你已經具備一定的iOS應用開發基礎,或已經學完了《瘋狂iOS講義(基礎篇)》一書,那么將非常適合閱讀此書;如果你對Objective-C、Swift的掌握還不熟練,比如對Xcode安裝、Objective-C、Swift基本語法都不熟練,建議遵從學習規律,循序漸進,暫時不要購買、閱讀此書。 2016-5-20 |
內容簡介:(含光盤1張) 書基于《瘋狂iOS講義(下)》升級而來,已真正升級成Swift、Objective-C雙語講解。本書所有案例全部提供Swift、Objective-C兩個語言的版本。本書基于最新的iOS 9.3、Xcode 7.3平臺,全面介紹iOS應用開發的高級知識。本書包含多點觸摸與手勢處理、應用國際化、數據存儲、SQLite數據庫與Core Data、iOS多媒體開發、加速計和陀螺儀、多線程、網絡編程、XMPP即時通信、定位、地圖、推送機制、iCloud服務、HealthKit框架等內容,本書最后還通過瘋狂軟件商城App整合介紹了iOS App的界面開發、自定義UI控件、手勢處理、網絡通信、本地數據存儲、在線支付等功能的用法。讀者在閱讀本書之前,建議先掌握《瘋狂iOS講義(基礎篇)》中的知識。本書并不局限于介紹iOS編程的各種理論知識,而是從“項目驅動”的角度來講授理論,全書一共包括近百個實例,這些示范性的實例既可幫助讀者更好地理解各知識點在實際開發中的應用,也可供讀者在實際開發時作為參考、拿來就用。 本書為所有打算深入掌握iOS編程的讀者而編寫,適合各種層次的iOS學習者和開發者閱讀,也適合作為大學教育、培訓機構的iOS教材。 |
目錄:第1章 多點觸摸與手勢檢測 1 1.1 響應者鏈 2 1.2 響應觸碰方法 3 1.3 使用手勢處理器(UIGestureRecognizer) 3 1.3.1 使用UITapGestureRecognizer 處理點擊手勢 4 1.3.2 使用UIPinchGestureRecognizer 處理捏合手勢 6 實例:通過捏合手勢縮放圖片 7 1.3.3 使用UIRotationGestureRecognizer 處理旋轉手勢 9 實例:通過旋轉手勢旋轉圖片 9 1.3.4 使用UISwipeGestureRecognizer 處理輕掃手勢 11 實例:貪食蛇 13 1.3.5 使用UIPanGestureRecognizer處理 拖動手勢 19 1.3.6 使用UILongPressGestureRecognizer 處理長按手勢 21 實例:長按添加按鈕 22 1.4 創建和使用自定義手勢處理器 24 1.4.1 開發自定義手勢處理器 24 1.4.2 使用自定義手勢處理器 26 1.5 本章小結 27 第2章 國際化 28 2.1 iOS應用國際化的基礎 29 2.1.1 iOS應用的國際化思路 29 2.1.2 國際化支持的語言和國家 31 2.2 國際化界面設計文件 32 2.3 國際化應用程序的顯示名稱 36 2.4 國際化圖片 39 2.5 國際化文本 41 2.6 本章小結 43 第3章 iOS的數據存儲 44 3.1 應用程序沙盒 45 3.1.1 獲取Documents目錄 47 3.1.2 獲取tmp目錄 47 3.1.3 文件保存策略思考 47 3.2 應用程序參數與用戶默認設置 48 3.2.1 使用Settings Bundle 48 3.2.2 使用NSUserDefaults讀取、保 存應用程序參數 57 3.3 屬性列表 62 實例:備忘錄 62 3.4 對象歸檔和原生I/O API 66 3.5 使用SQLite 3數據庫 66 3.5.1 iOS的SQLite編程 67 3.5.2 創建數據庫和表 71 3.5.3 使用SQL語句執行查詢 71 實例:英文生詞本 72 3.5.4 使用sqlite3工具 76 3.5.5 使用SQLite Manager管理數據庫 77 3.6 使用Core Data框架 79 3.6.1 Core Data簡介 80 3.6.2 初始化Core Data項目 82 3.6.3 設計實體模型 86 3.6.4 使用Core Data實現數據的增、 刪、改、查 88 3.6.5 管理實體的關聯關系 95 實例:圖書管理系統 95 3.7 本章小結 102 第4章 多媒體應用開發 103 4.1 音頻和視頻的播放 104 4.1.1 使用System Sound Services 播放音效 104 4.1.2 使用AVAudioPlayer播放音樂 106 4.1.3 使用MPMediaPickerController 選擇系統音樂 110 實例:簡單音樂播放器 111 4.1.4 使用AVPlayer播放視頻 114 4.2 使用AVAudioRecorder錄制音頻 121 4.3 拍照和錄制視頻 125 4.3.1 使用UIImagePickerController 拍照和錄制視頻 125 4.3.2 使用AVFoundation拍照和錄 制視頻 130 實例:完全自定義的相機 132 4.4 使用AVFoundation生成視頻縮略圖 143 4.5 本章小結 145 第5章 管理手機 146 5.1 使用iOS 9新增的Contacts管理聯系人 147 5.1.1 查詢聯系人 151 5.1.2 刪除聯系人 154 5.1.3 添加聯系人 155 5.1.4 修改聯系人 157 5.2 使用iOS 9的ContactsUI管理聯系人 163 5.2.1 使用CNContactViewController 添加聯系人 164 5.2.2 使用CNContactViewController 顯示未知聯系人 165 5.2.3 使用CNContactPickerViewController 選擇聯系人 167 5.3 使用UIApplication打電話、發短信 169 5.4 使用MFMessageComposeViewController 發送短信 171 5.5 使用MFMailComposeViewController發 送郵件 174 5.6 本章小結 178 第6章 加速計與陀螺儀 179 6.1 iOS支持的加速計和陀螺儀 180 6.1.1 iOS加速計和陀螺儀的理論基礎 180 6.1.2 基于代碼塊方式獲取加速度數 據、陀螺儀數據、磁場數據 181 6.1.3 主動請求獲取加速度數據、陀 螺儀數據、磁場數據 184 實例:怪物足球 187 6.2 感知設備移動 192 實例:水平儀 195 6.3 健康相關傳感器 199 6.3.1 使用CMMotionActivityManager 199 6.3.2 使用CMPedometer獲取步行數據 201 6.4 使用CMAltimeter獲取高度改變信息 203 6.5 iOS 9新增的CMSensorRecorder 205 6.6 本章小結 207 第7章 多線程 208 7.1 線程概述 209 7.1.1 線程和進程 209 7.1.2 多線程的優勢 210 7.2 使用NSThread實現多線程 211 7.2.1 創建和啟動線程 211 7.2.2 線程的狀態 213 7.2.3 終止子線程 213 7.2.4 線程睡眠 215 實例:使用線程下載網絡圖片 215 7.2.5 改變線程優先級 217 7.3 線程同步與線程通信 218 7.3.1 線程安全問題 218 7.3.2 使用同步代碼塊實現同步 220 7.3.3 釋放對同步監視器的鎖定 223 7.3.4 同步鎖(NSLock) 223 7.3.5 使用NSCondition控制線程通信 224 實例:生產者-消費者 224 7.4 使用GCD實現多線程 228 7.4.1 創建隊列 229 7.4.2 異步提交任務 230 實例:使用GCD下載圖片 233 7.4.3 同步提交任務 234 7.4.4 多次執行的任務 235 7.4.5 只執行一次的任務 237 7.5 后臺運行 238 7.5.1 進入后臺時釋放內存 238 實例:瘋狂飛機大戰 238 7.5.2 進入后臺時保存狀態 245 7.5.3 請求更多的后臺時間 246 7.6 使用NSOperation與NSOperationQueue 實現多線程 248 7.6.1 使用NSInvocationOperation和 NSBlockOperation 249 實例:使用NSBlockOperation下載圖片 249 7.6.2 定義NSOperation子類 251 7.7 本章小結 253 第8章 iOS網絡編程 254 8.1 檢測網絡狀態 255 8.1.1 檢查網絡狀態 255 8.1.2 監聽網絡狀態改變 259 8.2 使用CFNetwork實現TCP協議的通信 260 8.2.1 IP地址與端口號 260 8.2.2 TCP協議基礎 261 8.2.3 使用CFSocket實現TCP服務器端 262 8.2.4 使用CFSocket實現TCP客戶端 266 實例:網絡聊天程序 268 8.2.5 使用CocoaAsyncSocket實現TCP 客戶端 271 8.3 使用NSURLSession 275 8.3.1 使用NSURLSession從網絡獲 取數據 275 8.3.2 使用NSMutableURLRequest向服 務器發送數據 280 8.4 XML解析 282 8.4.1 DOM與SAX 282 8.4.2 使用NSXMLParser解析XML文檔 284 8.4.3 使用libxml2解析XML文檔 289 8.4.4 使用KissXML解析XML文檔 293 8.4.5 使用KissXML生成、修改XML 文檔 296 8.5 JSON解析 299 8.5.1 JSON的基本知識 299 8.5.2 使用NSJSONSerialization處理 JSON數據 302 8.5.3 使用SBJson解析JSON數據 302 8.6 使用AFNetworking實現網絡通信 307 8.6.1 提交GET請求與提交POST請求 307 實例:訪問被保護資源 308 8.6.2 處理JSON或Plist響應 312 8.6.3 處理XML響應 315 8.6.4 上傳文件 317 8.7 使用ASIHTTPRequest框架實現網絡編程 320 8.7.1 發送同步或異步的GET請求 321 8.7.2 使用代碼塊 325 8.7.3 使用NSOperationQueue管理請求 326 8.7.4 發送請求參數和文件上傳 328 實例:天氣預報 330 8.8 本章小結 340 第9章 使用CoreLocation定位 341 9.1 iOS的定位支持 342 9.1.1 GPS衛星定位 342 9.1.2 基站定位 343 9.1.3 WiFi定位 343 9.2 獲取定位信息 343 9.2.1 iOS 9增強的后臺定位 344 9.2.2 使用iOS模擬器模擬位置 349 9.2.3 監控行車速度和行車距離 349 9.3 方向監測 352 實例:指南針 353 9.4 區域監測 355 9.5 本章小結 358 第10章 使用MapKit開發地圖服務 359 10.1 使用MapKit框架 360 10.1.1 使用MKMapView控件 361 10.1.2 指定地圖顯示中心和顯示區域 362 10.1.3 在地圖上使用MKMapCamera 366 10.2 根據地址定位 367 10.2.1 地址解析與反向地址解析 367 10.2.2 根據地址定位 373 10.3 在地圖上添加錨點 376 10.3.1 添加簡單的錨點 376 10.3.2 添加自定義錨點 380 10.4 在地圖上添加覆蓋層 383 10.4.1 添加幾何覆蓋層 384 10.4.2 添加MKTileOverlay覆蓋層 386 10.5 使用MKDirections獲取導航路線 389 實例:行車導航儀 389 10.6 本章小結 393 第11章 消息推送與XMPP即時通信 394 11.1 使用NSNotificationCenter通信 395 11.1.1 使用NSNotificationCenter監聽 系統組件的通知 396 11.1.2 使用NSNotificationCenter監聽 自定義通知 398 11.2 iOS本地通知 400 11.3 iOS遠程推送通知 405 11.3.1 開發遠程推送客戶端應用 407 11.3.2 開發推送通知的服務端程序 415 11.4 基于XMPP的即時通信 422 11.4.1 XMPP簡介 422 11.4.2 下載和安裝ejabberd 424 11.4.3 下載和安裝XMPPFramework 427 實例:即時通信App 428 11.4.4 注冊登錄 429 11.4.5 查詢好友列表 434 11.4.6 好友上線、下線 441 11.4.7 添加、刪除好友 442 11.4.8 查詢聊天室列表 443 11.4.9 創建、加入聊天室 447 11.4.10 接收、發送聊天消息 449 11.5 本章小結 459 第12章 iCloud服務 460 12.1 iCloud入門 461 12.1.1 為應用開啟iCloud服務 462 12.1.2 使用NSMetadataQuery查詢 文檔 464 12.1.3 添加文檔 469 12.1.4 編輯文檔 472 12.1.5 刪除文檔 474 12.2 使用iCloud保存云端首選項 475 12.3 使用CloudKit保存數據 479 12.3.1 設計云端數據庫 479 12.3.2 查詢云端記錄 481 實例:云端圖書管理 482 12.3.3 刪除云端記錄 485 12.3.4 添加云端記錄 486 12.3.5 修改云端記錄 488 12.4 本章小結 490 第13章 HealthKit框架 491 13.1 HealthKit簡介 492 13.1.1 HealthKit常識 492 13.1.2 HealthKit的基礎API 493 13.1.3 HealthKit的數據簡介 494 13.2 讀取特征數據 494 13.2.1 請求獲取授權 495 13.2.2 使用HKHealthStore讀取數據 499 13.2.3 查詢樣本數據 503 13.2.4 添加樣本數據 509 13.3 操作鍛煉數據 510 13.3.1 查詢鍛煉數據 511 13.3.2 添加鍛煉數據 515 13.4 本章小結 523 第14章 瘋狂軟件商城App 524 14.1 系統功能簡介和架構設計 525
14.1.1 系統功能簡介 525 14.1.2 系統架構設計 525 14.2 發送請求的工具類 526 14.3 應用界面設計 528 14.4 顯示熱賣商品 531 14.4.1 熱賣商品的服務器端接口 532 14.4.2 加載顯示熱賣商品 532 14.5 顯示商品詳情 540 14.5.1 顯示商品 540 14.5.2 加入購物車 544 14.6 處理訂單 547 14.6.1 處理購物車 547 14.6.2 確認訂單 553 14.6.3 微信支付 558 14.7 分類瀏覽 570 14.7.1 商品類別的服務器端接口 570 14.7.2 加載、顯示商品分類 570 14.7.3 加載、顯示指定分類的商品 573 14.8 商家介紹 576 14.9 本章小結 578 |
序: |