産品特色
內容簡介
《Effective Objective-C 2.0:編寫高質量iOS與OS X代碼的52個有效方法 英文版》不是在講Objective-C語言的基礎知識,而是要講如何高效運用這門語言。《Effective Objective-C 2.0:編寫高質量iOS與OS X代碼的52個有效方法 英文版》共分7章,從7個方麵總結和探討瞭Objective-C編程中52個鮮為人知又容易被忽視的特性。第1章從整體上講解Objective-C的核心概念;第2章講述瞭與麵嚮對象語言的重要特徵(對象、消息和運行期)相關的行為;第3章介紹瞭如何編寫適閤與Objective-C搭配的類;第4章講述協議與分類相關的技巧;第5章介紹內存管理的注意事項;第6章介紹塊與大中樞派發(GrandCentralDispatch)相關的技巧;第7章總覽瞭Cocoa和CocoaTouch係統框架,並深入研究瞭其中的某些類。
作者簡介
Matt Galloway,是英國倫敦的一名 iOS 開發人員。他在 2007 年畢業於劍橋大學彭布魯剋學院,獲得工學碩士學位,研究方嚮是電子信息科學。自那時起,他一直從事編程,主要使用 Objective-C。從 iOS 發布 SDK 開始,他一直在 iOS 上進行開發。他的 Twitter 賬號是 @mattjgalloway,常常在 Stack Overflow上迴答問題。
目錄
前言
緻謝
關於作者
Chapter 1: Accustoming Yourself to Objective-C
Item 1: Familiarize Yourself with Objective-C’s Roots
Item 2: Minimize Importing Headers in Headers
Item 3: Prefer Literal Syntax over the Equivalent Methods
Item 4: Prefer Typed Constants to Preprocessor #define
Item 5: Use Enumerations for States, Options, and Status Codes
Chapter 2: Objects, Messaging, and the Runtime
Item 6: Understand Properties
Item 7: Access Instance Variables Primarily Directly When
Accessing Them Internally
Item 8: Understand Object Equality
Item 9: Use the Class Cluster Pattern to Hide Implementation Detail
Item 10: Use Associated Objects to Attach Custom Data to Existing Classes
Item 11: Understand the Role of objc_msgSend
Item 12: Understand Message Forwarding
Item 13: Consider Method Swizzling to Debug Opaque Methods
Item 14: Understand What a Class Object Is
Chapter 3: Interface and API Design
Item 15: Use Prefix Names to Avoid Namespace Clashes
Item 16: Have a Designated Initializer
Item 17: Implement the description Method
Item 18: Prefer Immutable Objects
Item 19: Use Clear and Consistent Naming
Item 20: Prefix Private Method Names
Item 21: Understand the Objective-C Error Model
Item 22: Understand the NSCopying Protocol
Chapter 4: Protocols and Categories
Item 23: Use Delegate and Data Source Protocols for Interobject Communication
Item 24: Use Categories to Break Class Implementations into Manageable Segments
Item 25: Always Prefix Category Names on Third-Party Classes
Item 26: Avoid Properties in Categories
Item 27: Use the Class-Continuation Category to Hide Implementation Detail
Item 28: Use a Protocol to Provide Anonymous Objects
Chapter 5: Memory Management
Item 29: Understand Reference Counting
Item 30: Use ARC to Make Reference Counting Easier
Item 31: Release References and Clean Up Observation State Only in dealloc
Item 32: Beware of Memory Management with Exception-Safe Code
Item 33: Use Weak References to Avoid Retain Cycles
Item 34: Use Autorelease Pool Blocks to Reduce High-Memory Waterline
Item 35: Use Zombies to Help Debug Memory-Management Problems
Item 36: Avoid Using retainCount
Chapter 6: Blocks and Grand Central Dispatch
Item 37: Understand Blocks
Item 38: Create typedefs for Common Block Types
Item 39: Use Handler Blocks to Reduce Code Separation
Item 40: Avoid Retain Cycles Introduced by Blocks Referencing the Object Owning Them
Item 41: Prefer Dispatch Queues to Locks for Synchronization
Item 42: Prefer GCD to performSelector and Friends
Item 43: Know When to Use GCD and When to Use Operation Queues
Item 44: Use Dispatch Groups to Take Advantage of Platform Scaling
Item 45: Use dispatch_once for Thread-Safe Single-Time Code Execution
Item 46: Avoid dispatch_get_current_queue
Chapter 7: The System Frameworks
Item 47: Familiarize Yourself with the System Frameworks
Item 48: Prefer Block Enumeration to for Loops
Item 49: Use Toll-Free Bridging for Collections with Custom Memory-Management Semantics
Item 50: Use NSCache Instead of NSDictionary for Caches
Item 51: Keep initialize and load Implementations Lean
Item 52: Remember that NSTimer Retains Its Target
Index
前言/序言
經常聽到有人抱怨 Objective-C 這門語言的冗長、笨拙、彆扭,但我卻認為它優雅、靈活又漂亮。然而,為瞭領略這些優點,我們不僅要掌握基礎知識,還要理解該語言的特性、陷阱及繁難之處。這正是本書要講述的內容。
關於本書
本書假定讀者已經熟悉瞭 Objective-C 的語法,所以不再對其贅述。本書要講的是怎樣完全發揮這門語言的優勢,以編寫齣良好的代碼。由於 Objective-C 源自 Smalltalk,所以它是一門相當動態的語言。在其他語言中,許多工作都由編譯器來完成;而在 Objective-C 中,則要由“運行時”(runtime)執行。於是,某個函數即使在測試環境下能正常運行,到瞭工作環境中也可能會因為處理瞭無效數據而不能正確執行。避免此類問題的最佳方案,當然是一開始就把代碼寫好。
嚴格地說,本書中的許多話題與 Objective-C 的核心部分並無關聯。本書要談到係統庫中的技術,例如 libdispatch 庫的“大中樞派發”(Grand Central Dispatch)等。因為當前所說的 Objective-C 開發就是指開發 Mac OS X 或 iOS 應用程序,所以,書中也要提及Foundation 框架中的許多類,而不僅僅是其基類 NSObject。不論開發 Mac OS X 程序還是iOS 程序,都無疑會用到係統框架,前者所用的各框架統稱為 Cocoa,後者所用的框架則叫作 Cocoa Touch。
隨著 iOS 的興起,許多開發者都加入瞭 Objective-C 開發的隊伍。有的程序員初學編程,有的具備 Java 或 C++ 基礎,還有的則是網頁開發者齣身。無論是哪種,為瞭能高效運用Objective-C,你都必須花時間研究這門語言,纔可能寫齣更高效、更易於維護、更少 bug 的代碼來。
盡管本書的內容隻花瞭 6 個月時間就寫好瞭,但是其醞釀過程卻長達數年。幾年前的一天,我一時興起,買瞭個 iPod Touch;然後等到第一版 SDK 發布之後,我決定試著開發一個程序。我做的第一個“應用程序”叫“Subnet Calc”,其下載量比預想中要多。那時候我感覺到自己以後要和這個美妙的語言結緣瞭。從此我就一直研究 Objective-C,並定期在自己的網站 www.galloway.me.uk 上發錶博客。我對該語言的內部工作原理,如塊(block)、自動引用計數(Auto Reference Count,ARC)等特彆感興趣。於是,在有機會寫一本講解Objective-C 的書時,我自然就抓住瞭機會。
為提升本書的閱讀效果,我鼓勵大傢跳躍閱讀,直接翻到最感興趣或與當前工作有關的章節來看。可以分開閱讀每條技巧,也可以按其中所引用的條目跳至其他話題,互相參照。我將各類相關技巧歸並成章,所以讀者可以根據各章標題快速找到關於某個語言特性的技巧。
本書目標讀者
本書麵嚮那些有誌於深入研究 Objective-C 的開發者,幫助其編寫更便於維護、更高效且更少 bug 的代碼。如果你目前還不是 Objective-C 程序員,但是會使用 Java 或 C++ 等其他麵嚮對象的語言,那麼你仍可閱讀此書,不過你需要先瞭解一下 Objective-C 的語法。
本書主要內容
本書不打算講 Objective-C 語言的基礎知識,你可以在許多教材和參考資料中找到這些內容。本書要講的是如何高效運用這門語言。書中內容分為若乾條目,每條都是一小塊易於理解的文字。這些條目按其所談話題有邏輯地組織為如下各章。
第 1 章:熟悉 Objective-C(Accustoming Yourself to Objective-C)
從整體上講解該語言的核心概念。
第 2 章:對象、消息和運行時(Objects, Messaging, and the Runtime)
麵嚮對象語言的一個重要特徵是,對象之間能夠關聯與交互。本章講述瞭這些特徵,並深入研究代碼在運行時的行為。
第 3 章:接口與 API 設計(Interface and API Design)
很少有那種寫完就不再復用的代碼。即使代碼不嚮更多人公開,也依然有可能用在自己的多個項目中。本章講解如何編寫適閤與 Objective-C 搭配的類。
第 4 章:協議與分類(Protocols and Categories)
協議與分類是兩個需要掌握的重要語言特性。若運用得當,則可令代碼易讀、易維護且少齣錯。本章將幫助讀者精通這兩個概念。
第 5 章:內存管理(Memory Management)
Objective-C 語言以引用計數來管理內存——許多初學者對此感覺很彆扭;如果之前使用的語言以垃圾收集器(garbage collector)來管理內存,那麼更會如此。“自動引用計數”機製緩解瞭此問題,不過使用時有很多重要的注意事項,以確保對象模型正確,不緻內存泄漏。本章提醒讀者注意內存管理中易犯的錯誤。
第 6 章:塊與大中樞派發(Blocks and Grand Central Dispatch)
蘋果公司引入瞭“塊”(block)這一概念,其語法類似於C語言擴展中的閉包(closure)。在 Objective-C 語言中,我們通常用塊來實現一些之前需要很多樣闆代碼纔能完成的事情,塊還能實現代碼分離(code separation)。大中樞派發(Grand Central Dispatch,GCD)提供瞭一套用於多綫程環境的簡單接口。塊可視為 GCD 的任務,取決於係統資源狀況,這些任務也許能並發執行。本章將教讀者如何充分運用這兩項核心技術。
第 7 章:係統框架(The System Frameworks)
大傢通常會用 Objective-C 來開發 Mac OS X 或 iOS 程序。在這兩種情況下都有一套完整的係統框架可供使用,前者名為 Cocoa,後者名為 Cocoa Touch。本章將總覽這些框架,並深入研究其中的某些類。
緻謝
在被人問是否願意寫一本關於 Objective-C 的書時,我立刻興奮瞭起來。讀過瞭Effective 係列的其他書籍後,我意識到要想寫好這本 Objective-C 的書籍可真是個挑戰。然而在眾人協助之下,這本書終於和大傢見麵瞭。
本書中的很多靈感都源自許多專門論述 Objective-C 的精彩博文。所以首先要感謝博文作者 Mike Ash、Matt Gallagher 及“bbum”等人。多年來,這些博客幫助我更深地理解瞭Objective-C 語言。在編撰本書時,NSHipster 及 Mattt Thompson 所寫的優秀文章也啓發瞭我的思路。還要感謝蘋果公司提供的極為有用的開發文檔。
在供職於 MX Telecom 期間,我學到瞭許多知識,若沒有這段經曆,恐怕就無法完成此書瞭。感謝 Matthew Hodgson,他給瞭我機會,讓我以一套成熟的 C++ 代碼庫為基礎,開發齣瞭公司的第一個iOS應用程序,在該項目中學到的本領為我參與後續項目打下瞭基礎。
感謝曆年來保持聯係的各位同仁。大傢時而切磋技藝,時而把酒言歡,這對我寫作本書來說都是一種幫助。
感謝培生集團的編輯團隊,與你們的閤作相當愉快。Trina MacDonald、Olivia Basegio、Scott Meyers及Chris Zahn都在需要時給予我幫助與鼓勵。諸位為我提供瞭專心寫書的工具,並迴答瞭必要的問題。
還要感謝技術編輯們,與你們的閤作也非常融洽,你們給瞭我莫大的幫助。嚴格的審校幫助本書內容臻於完美。諸位在檢查書稿時認真細緻的態度也非常令人稱贊。
最後我要說,此書能問世,愛妻 Helen 的理解與支持必不可少。準備動筆那天,我們的第一個孩子 Rosie 降生瞭! Helen 與 Rosie 伴我順利寫完這本書,你們倆真棒!
Effective Objective-C 2.0:編寫高質量iOS與OS X代碼的52個有效方法(英文版) 下載 mobi epub pdf txt 電子書 格式
Effective Objective-C 2.0:編寫高質量iOS與OS X代碼的52個有效方法(英文版) 下載 mobi pdf epub txt 電子書 格式 2024
Effective Objective-C 2.0:編寫高質量iOS與OS X代碼的52個有效方法(英文版) mobi epub pdf txt 電子書 格式下載 2024