首页>参考读物>计算机科学与技术>软件与程序设计

Effective Objective-C 2.0:编写高质量iOS与OS X代码的52个有效方法
作者 : (英)Matt Galloway 著
译者 : 爱飞翔 译
丛书名 : Effective系列丛书
出版日期 : 2014-02-17
ISBN : 978-7-111-45129-7
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 218
开本 : 16
原书名 : Effective Objective-C 2.0: 52 Specific Ways to Improve Your iOS and OS X Programs
原出版社: Pearson Education Asia
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书介绍了在使用Objective-C写iOS和OS X代码时,如何将Objective-C的作用发挥至极致。秉承Scott Meyers的Effective C++系列畅销书的风格,本书提供了52条关于Objective-C编程的最佳实践、技巧、捷径,以及其他地方看不到的活生生的实例。

图书特色

用Objective-C 2.0编写优秀的iOS及OS X代码!

本书介绍如何利用Objective-C语言强大的表现力,写出能够在生产环境中出色运行的iOS及OS X代码。Scott Meyers在其畅销书《Effective C++》中,首创了一套以应用场景来精准讲解编程技巧的行文风格,而本书作者Matt Galloway则采用此方式汇集了52条Objective-C编程心得,其中含有各种技巧与快速解决方案,以及在别处难以找到的真实工作环境里的范例代码。

作者通过这些实用范例,向大家揭示了Objective-C中鲜为人知的各种奇怪现象与易错之处,同时还讲解了很多能够改善代码行为并提高程序性能的复杂特性。读者将在书中学到如何从多个方案里选出一种最高效的办法来完成关键编程任务,还能掌握怎样写出易于理解、易于维护、易于扩展的代码。除了语言的核心部分之外,书中还介绍了如何使用Foundation框架中的类,以及如何将“大中枢派发”等当前流行的系统库集成到自己的项目中。

本书内容包括:
优化Objective-C对象之间的互动与关系。
掌握接口与API的设计原则,写出令开发者用起来得心应手的类。
善用协议与分类,编写便于维护且不易出现bug的代码。
在自动引用计数(ARC)环境下避免内存泄漏。
用“块”与“大中枢派发”编写呈模块化且功能强大的代码。
理解Objective-C中的协议与其他编程语言中的多重继承有何区别,并掌握协议的用法。
通过数组、字典、set等collection对象来提高代码性能。
揭示Cocoa与Cocoa Touch框架的强大之处。


作者简介
Matt Galloway 资深软件开发工程师,精通移动应用程序的开发与设计,毕业于英国剑桥大学,咨询公司Swipe Stack Ltd.的创始人。经常在Stack Overflow网站(stackoverflow.com)上回答与Objective-C、iOS和Mac编程相关的问题,经验非常丰富。

译者简介
爱飞翔 资深软件开发工程师,擅长Web开发、移动开发和游戏开发,有10余年开发经验,曾主导和参与了多个手机游戏和手机软件项目的开发,经验十分丰富。他对极限编程、设计模式、重构、测试驱动开发、敏捷软件开发等也有较深入的研究,目前负责敏捷移动开发网(http://www.agilemobidev.com/)的运营。


“Effective Software Development Series”系列经典著作,世界级软件开发大师Scott Meyers亲自担当顾问编辑,Amazon全五星评价
从语法、接口与API设计、内存管理、框架等方面总结和探讨了Objective-C编程中52个鲜为人知和容易被忽视的特性与陷阱
包含大量实用范例代码,为编写易于理解、便于维护、易于扩展和高效的Objective-C应用提供了解决方案

图书前言

许多人认为Objective-C这门语言芜杂、笨拙、别扭,但笔者却看到其雅致、灵活、美观的一面。然而,为了领略这些优点,大家不仅要掌握基础知识,还要理解语言中的特性、陷阱及繁难之处。本书正是要讲述这些内容。
关于本书
  本书假定读者已经熟悉了Objective-C的语法,所以不再赘述。笔者要讲的是怎样完全发挥这门语言的优势,以编写出良好的代码。由于其源自Smalltalk,所以Objective-C是一门相当动态的语言。在其他语言中,许多工作都由编译器来完成;而在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,无论是哪种情况,你都必须花时间研究这门语言,从而写出执行迅速、便于维护、不易出错的代码来。
  尽管这本书只用6个月就写好了,但是其酝酿过程却长达数年。笔者某天心血来潮,买了个iPod Touch,等到第一版SDK发布之后,就决定开发个程序玩玩。我做的第一个“应用程序”叫“Subnet Calc”,其下载量比预想中要多。于是我确信,以后要和这个美妙的语言结缘了。从此就一直研究Objective-C,并定期在自己的网站www.galloway.me.uk上发表博文。我对该语言的内部工作原理,诸如“块”(block)、“自动引用计数”(Auto Reference Count,ARC)等特别感兴趣。于是,在有机会写作一本讲Objective-C的书时,自然就当仁不让了。
  为使本书物尽其用,笔者建议大家跳读,直接翻到最感兴趣或与当前工作有关的章节来看。可以分开阅读每条技巧,也可以按其中所引用的条目跳至其他话题,互相参照。相关技巧归并成章,读者可根据各章标题快速找到谈及某个语言特性的数条技巧。
目标读者
  本书面向那些有志于深入研究Objective-C的开发者,帮助其编写便于维护、执行迅速且不易出错的代码。如果你目前还不是Objective-C程序员,但是会用Java或C++这样面向对象的语言,那么仍可阅读此书。在这种情况下,应先了解Objective-C的语法。
本书主要内容
  本书不打算讲Objective-C语言的基础知识,在许多教材和参考资料中都能找到那些内容。本书要讲的是如何高效运用这门语言。书中内容分为若干条目,每条都是一小块易于理解的文字。这些条目按其所谈话题组织为如下各章。
  第1章:熟悉Objective-C
  通论该语言的核心概念。
  第2章:对象、消息、运行期
  对象之间能够关联与交互,这是面向对象语言的重要特征。本章讲述这些特征,并深入研究代码在运行期的行为。
  第3章:接口与API设计
  很少有那种写完就不再复用的代码。即使代码不向更多人公开,也依然有可能用在自己的多个项目中。本章讲解如何编写与Objective-C搭配得宜的类。
  第4章:协议与分类
  协议与分类是两个需要掌握的重要语言特性。若运用得当,则可令代码易读、易维护且少出错。本章将帮助读者精通这两个概念。
  第5章:内存管理
  Objective-C语言以引用计数来管理内存,这令许多初学者纠结,要是用过以“垃圾收集器”(garbage collector)来管理内存的语言,那么更会如此。“自动引用计数”机制缓解了此问题,不过使用时有很多重要的注意事项,以确保对象模型正确,不致内存泄漏。本章提醒读者注意内存管理中易犯的错误。
  第6章:块与大中枢派发
  苹果公司引入了“块”这一概念,其语法类似于C语言扩展中的“闭包”(closure)。在Objective-C语言中,我们通常用块来实现一些原来需要很多样板代码才能完成的事情,块还能实现“代码分离”(code separation)。“大中枢派发”(Grand Central Dispatch,GCD)提供了一套用于多线程环境的简单接口。“块”可视为GCD的任务,根据系统资源状况,这些任务也许能并发执行。本章将教会读者如何充分运用这两项核心技术。
  第7章:系统框架
  大家通常会用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的理解与支持必不可少。准备动笔那天,我们的第一个孩子降生了,真正开始写作是在几天之后。Helen与Rosie伴我顺利写完这本书,你们俩真棒!

上架指导

计算机\程序设计

封底文字

用Objective-C 2.0编写优秀的iOS及OS X代码!

  本书将引导大家利用Objective-C语言强大的表现力,写出能够在生产环境中出色运行的OS X及iOS代码。Scott Meyers在其畅销书《Effective C++》中,首创了一套以应用场景来精准讲解编程技巧的行文风格,而本书作者Matt Galloway则采用此方式汇集了52条Objective-C编程心得,其中含有各种技巧与快速解决方案,以及在别处难以找到的真实工作环境里的范例代码。

  作者通过这些实用范例,向大家揭示了Objective-C中鲜为人知的各种奇怪现象与易错之处,同时还讲解了很多能够改善代码行为并提高程序性能的复杂特性。读者将在书中学到如何从多个方案里选出一种最高效的办法来完成关键编程任务,还能掌握怎样写出易于理解、易于维护、易于扩展的代码。除了语言的核心部分之外,书中还介绍了如何使用Foundation框架中的类,以及如何将“大中枢派发”等当前流行的系统库集成到自己的项目中。

本书内容包括:

■ 优化Objective-C对象之间的互动与关系。
■ 掌握接口与API的设计原则,写出令开发者用起来得心应手的类。
■ 善用协议与分类,编写便于维护且不易出现bug的代码。
■ 在自动引用计数(ARC)环境下避免内存泄漏。
■ 用“块”与“大中枢派发”编写呈模块化且功能强大的代码。
■ 理解Objective-C中的协议与其他编程语言中的多重继承有何区别,并掌握协议的用法。
■ 通过数组、字典、set等collection对象来提高代码性能。
■ 揭示Cocoa与Cocoa Touch框架的强大之处。

作者简介

(英)Matt Galloway 著:暂无简介

译者简介

爱飞翔 译:暂无简介

译者序

看到Effective这个词,大家一定会想到《Effective C++》、《Effective Java》等业界名著,那些书里既汇聚了多项实用技巧,又系统而深入地讲解了各种编程知识。那么这本《Effective Objective-C 2.0》是否也是如此呢?没错,它再次演绎了经典!
  作为Mac OS X与iOS应用程序的开发语言,Objective-C近年来颇受关注。尤其是智能手机与平板电脑兴起之后,越来越多的开发者都将目光转向移动平台,并开始学习Objective-C。与C++、Java一样,Objective-C也有“入门易,精通难”的问题。而本书作者Matt Galloway有多年开发经验,他将工作中遇到的各种问题分成7大类52小项,逐条罗列出来。在研读过程中,你不仅可以找到具体解决办法,而且还能体会到不同解决方案之间的优劣,更为重要的是,本书深入探讨了语言里一些鲜为人知或容易被人忽视的特性,令开发者明白其微妙之处,从而在实际工作中避开这些陷阱。书中每条心得几乎都给出了相当实用的范例代码,读者可直接将其运用在实际编程中,也可按照需要稍加改编,并举一反三,类推出更多相关技巧来。
  除了讲解Objective-C语言本身外,书里还讲了与其密不可分的各种框架,相信你阅读完之后,会更深入地了解这门语言,同时编写易于理解、易于维护、易于扩展的高效应用程序应该也不再是难事了。在“从入门到精通”的过程中,本书定是你的良师益友。
  本书由爱飞翔翻译,舒亚林和张军也参与了部分翻译工作,译文最后由爱飞翔统一整理。翻译过程中,得到机械工业出版社华章分社诸位编辑与工作人员的帮助,在此深表谢意。
  由于时间仓促,译者水平有限,错误与疏漏之处敬请读者批评指正。大家可访问网页http://agilemobidev.com/eastarlee/book/effective-objective-c留言,亦可发电子邮件至eastarstormlee@gmail.com。

爱飞翔

图书目录

译者序
前言
致谢
第1章 熟悉Objective-C 1
第1条:了解Objective-C语言的起源 1
第2条:在类的头文件中尽量少引入其他头文件 4
第3条:多用字面量语法,少用与之等价的方法 7
第4条:多用类型常量,少用#define预处理指令 11
第5条:用枚举表示状态、选项、状态码 14
第2章 对象、消息、运行期 21
第6条:理解“属性”这一概念 21
第7条:在对象内部尽量直接访问实例变量 28
第8条:理解“对象等同性”这一概念 30
第9条:以“类族模式”隐藏实现细节 35
第10条:在既有类中使用关联对象存放自定义数据 39
第11条:理解objc_msgSend的作用 42
第12条:理解消息转发机制 46
第13条:用“方法调配技术”调试“黑盒方法” 52
第14条:理解“类对象”的用意 56
第3章 接口与API设计 60
第15条:用前缀避免命名空间冲突 60
第16条:提供“全能初始化方法” 64
第17条:实现description方法 69
第18条:尽量使用不可变对象 73
第19条:使用清晰而协调的命名方式 78
第20条:为私有方法名加前缀 83
第21条:理解Objective-C错误模型 85
第22条:理解NSCopying协议 89
第4章 协议与分类 94
第23条:通过委托与数据源协议进行对象间通信 94
第24条:将类的实现代码分散到便于管理的数个分类之中 101
第25条:总是为第三方类的分类名称加前缀 104
第26条:勿在分类中声明属性 106
第27条:使用“class-continuation分类”隐藏实现细节 108
第28条:通过协议提供匿名对象 114
第5章 内存管理 117
第29条:理解引用计数 117
第30条:以ARC简化引用计数 122
第31条:在dealloc方法中只释放引用并解除监听 130
第32条:编写“异常安全代码”时留意内存管理问题 132
第33条:以弱引用避免保留环 134
第34条:以“自动释放池块”降低内存峰值 137
第35条:用“僵尸对象”调试内存管理问题 141
第36条:不要使用retainCount 146
第6章 块与大中枢派发 149
第37条:理解“块”这一概念 149
第38条:为常用的块类型创建typedef 154
第39条:用handler块降低代码分散程度 156
第40条:用块引用其所属对象时不要出现保留环 162
第41条:多用派发队列,少用同步锁 165
第42条:多用GCD,少用performSelector系列方法 169
第43条:掌握GCD及操作队列的使用时机 173
第44条:通过Dispatch Group机制,根据系统资源状况来执行任务 175
第45条:使用dispatch_once来执行只需运行一次的线程安全代码 179
第46条:不要使用dispatch_get_current_queue 180
第7章 系统框架 185
第47条:熟悉系统框架 185
第48条:多用块枚举,少用for循环 187
第49条:对自定义其内存管理语义的collection使用无缝桥接 193
第50条:构建缓存时选用NSCache而非NSDictionary 197
第51条:精简initialize与load的实现代码 200
第52条:别忘了NSTimer会保留其目标对象 205

教学资源推荐
作者: 覃华 韦兆文 陈琴
作者: Bruce Eckel, Chuck Allison
作者: [美]沙伦·比奥卡·扎卡沃(Sharon Biocca Zakhour) 索娅·坎南(Sowmya Kannan) 雷蒙德·盖拉多(Raymond Gallardo) 著
作者: 李柏岩 尹枫 王洪亚 等编著
参考读物推荐
作者: 王秀文 郭明鑫 王宇韬 编著
作者: 康莉 李宽 等编著
作者: [日]牧野 浩二(Koji Makino),[日]西崎 博光(Hiromitsu Nishizaki) 著