产品特色
        内容简介
     《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 伴我顺利写完这本书,你们俩真棒!    
				
 
				
				
					深入探索Objective-C的奥秘:打造卓越的iOS与OS X应用  在快速发展的移动和桌面应用开发领域,Objective-C语言凭借其强大的动态特性和Cocoa/Cocoa Touch框架的深度集成,一直是构建高质量iOS和OS X应用的基石。然而,要真正掌握Objective-C的精髓,并编写出既高效又易于维护的代码,绝非一日之功。这本书,《Effective Objective-C 2.0:编写高质量iOS与OS X代码的52个有效方法》(英文原版),正是为所有渴望在Objective-C开发领域精进的开发者量身打造的权威指南。它并非简单罗列语法规则,而是深入挖掘Objective-C语言设计背后的哲学,揭示那些能够显著提升代码质量、性能和可维护性的最佳实践。  本书的价值所在:为何它是您不可或缺的开发伴侣  这本书的核心在于其“有效方法”的视角。作者不仅仅是介绍Objective-C的特性,更重要的是阐述如何在实际开发场景中,如何以最有效的方式利用这些特性。这是一种从“知道”到“做到”的飞跃,是从理论到实践的升华。通过52个精选的主题,您将获得一系列经过实战检验、行之有效的编码策略和设计模式。这些方法覆盖了Objective-C开发的方方面面,从内存管理、对象生命周期,到并发编程、API设计,再到性能优化和错误处理,无不包含在内。  深入剖析Objective-C的强大之处:从对象模型到动态特性  Objective-C最引人注目的特性之一便是其面向对象模型。本书将引导您深入理解Objective-C的对象模型,包括类、实例、消息传递等核心概念。您将学习如何正确地使用类簇(class clusters),理解多态性的真正含义,以及如何利用协议(protocols)来定义行为契约,从而编写出更具扩展性和灵活性的代码。  此外,Objective-C强大的动态特性是其灵活性的重要来源。本书将详细阐述动态类型、消息转发(message forwarding)、运行时(runtime)特性等,并提供如何巧妙运用这些特性的实例。例如,您将学会如何利用运行时来动态地修改类的行为,实现更高级的元编程(metaprogramming)技巧,以及如何在不修改现有代码的情况下,为对象添加新的功能。这些深入的探讨,将帮助您突破传统面向对象编程的局限,写出更具创造性的代码。  内存管理与性能优化:告别内存泄漏,拥抱流畅体验  在iOS和OS X开发中,内存管理和性能优化是至关重要的两个方面。本书将花费大量篇幅,系统地梳理Objective-C的内存管理机制,从引用计数(reference counting)到ARC(Automatic Reference Counting)的演进。您将不仅仅是了解ARC的工作原理,更能深入理解其背后的细节,从而避免常见的内存管理陷阱,如循环引用(retain cycles)。通过掌握更精细的内存管理策略,您可以显著减少应用的内存占用,提升应用的响应速度,为用户带来更流畅的操作体验。  性能优化是另一项必不可少的技能。本书将提供一系列切实可行的性能优化技巧,包括如何选择合适的数据结构、如何避免不必要的对象创建、如何优化循环和方法调用、以及如何利用GCD(Grand Central Dispatch)进行高效的并发处理。您将学会如何使用Instruments等工具来分析应用的性能瓶颈,并根据分析结果采取有针对性的优化措施。这些技巧的运用,将使您的应用在竞争激烈的市场中脱颖而出。  并发编程与多线程:应对复杂的异步任务  随着移动设备处理能力的增强和用户对应用交互性的需求日益提高,并发编程和多线程处理成为了现代应用开发中的必备技能。本书将深入浅出地介绍Objective-C中的并发编程模型,重点讲解GCD的使用。您将学习如何使用GCD来执行异步任务、管理线程池、以及如何处理线程间的同步问题,从而避免数据竞争和死锁。此外,本书还会探讨Operation Queues等其他并发机制,帮助您根据不同的场景选择最合适的解决方案。掌握高效的并发编程能力,是构建响应迅速、用户体验良好的应用的关键。  API设计与代码组织:编写易于理解与维护的代码  高质量的代码不仅要性能优越,更要易于理解和维护。本书将深入探讨API设计原则,帮助您构建清晰、一致且易于使用的接口。您将学习如何为类和方法命名,如何设计返回类型,以及如何处理错误和异常。此外,本书还会强调代码组织的重要性,包括如何合理地划分模块、如何使用头文件和实现文件,以及如何撰写清晰的文档注释。遵循这些指导原则,可以极大地降低代码的维护成本,并提高团队协作的效率。  安全与错误处理:构建健壮可靠的应用  应用的健壮性和安全性是用户信任的基础。本书将指导您如何有效地进行错误处理,包括如何使用 NSError对象、如何实现断言(assertions)、以及如何处理潜在的运行时异常。您将学习如何设计能够优雅地处理各种错误情况的代码,从而避免应用崩溃。同时,本书还会触及一些与安全相关的最佳实践,虽然不是专门的安全书籍,但会包含一些能提升应用安全性的编码建议。  总结:通往Objective-C开发大师之路  《Effective Objective-C 2.0:编写高质量iOS与OS X代码的52个有效方法》并非一本快速通关的速成手册,而是一份需要您耐心研读、反复实践的宝典。它将帮助您从Objective-C的初学者或进阶者,成长为一名能够自信地设计、开发和优化高质量iOS与OS X应用的专业人士。通过掌握本书中的52个有效方法,您将不仅能够写出运行流畅、性能卓越的代码,更能编写出易于理解、稳定可靠、易于维护的应用,从而在技术浪潮中保持领先地位。这本书,是每一位致力于Objective-C开发的开发者,在职业生涯中都应该拥有和深入学习的必备参考。