Effective Objective-C 2.0:編寫高質量iOS與OS X代碼的52個有效方法英文版

Effective Objective-C 2.0:編寫高質量iOS與OS X代碼的52個有效方法英文版

《EffectiveObjective-C 2.0:編寫高質量iOS與OS X代碼的52個有效方法 英文版》是2016年4月電子工業出版社出版的圖書,作者是【美】Matt Galloway(馬特·加洛韋)。

基本介紹

  • 書名:EffectiveObjective-C 2.0:編寫高質量iOS與OS X代碼的52個有效方法 英文版
  • 作者:【美】Matt Galloway(馬特·加洛韋)
  • ISBN:978-7-121-27263-9
  • 頁數:304
  • 定價:75.00元 
  • 出版社電子工業出版社
  • 出版時間:2016年4月
  • 開本:16
內容簡介,內容提要,目錄,作者簡介,前言,關於本書,本書目標讀者,本書主要內容,致謝,

內容簡介

《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系統框架,並深入研究了其中的某些類。

內容提要

《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系統框架,並深入研究了其中的某些類。

目錄

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

作者簡介

Matt Galloway 是英國倫敦的一名 iOS 開發人員。他在 2007 年畢業於劍橋大學彭布魯克學院,獲得工學碩士學位,研究方向是電子信息科學。自那時起,他一直從事編程,主要使用 Objective-C。從 iOS 發布第一個 SDK 開始,他一直在 iOS 上進行開發。

前言

經常聽到有人抱怨 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,並定期在自己的網站上發表部落格。我對該語言的內部工作原理,如塊(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 伴我順利寫完這本書,你們倆真棒!

相關詞條

熱門詞條

聯絡我們