关于Object-C的类和对象的分析先暂停两天,还有关于编译器如何将OC的代码转换成C或者C++代码的部分没有做,那些对于理解OC的类和对象,消息传递等等会有不少的用途。这两天在着手翻译 Effective Object-C 2.0, 网上已经有本书的中文版本,我只是看到这个名字就那么的喜欢它,可能是由于Effective C++的缘故吧, 我只在网上找到了epub格式的英文版,因此就放在pad上看。 就突然又那么一股冲动,要不我也翻译点东西吧。鉴于我的语言表达水平有限,可能文字关于生硬,甚至有词不达意的情况,恳请各位看官见谅了。今天先做的前言的翻译工作。
EffectiveObject-C 2.0
翻译于2014年3月28日星期五 lpstudy
前言
我听到很多人说Object-C是一门冗长,啰嗦,拙劣,低效,丑陋的语言,但是恰恰相反,我却看到了它的优雅,美丽以及高扩展性。可是如果你想获得这些优美的特性,仅仅学习它的基础是不够的。更重要的是深入它的内部,去了解它的怪异,缺陷,错综复杂,这也是这本书的主题。
关于本书
这本书不会给你讲语法,那假定你已经完全了解了。它要告诉你的是如何使用OC这门语言去写代码以发挥它的全部潜能。由于SmallTalk的根源(thanks to having its roots in SmallTalk),Object-C是一门完全动态的语言。当然这不可避免会出现这样一种情况:你的代码在测试中是正常的,但是当进入生产环境中,由于不合法的输入数据,你的程序却异常的终止了。第一时间发现并避免这些问题是非常必要的。
严格来说,这本书的很多主题与Object-C的内核无关,更多的是与系统框架有关,例如GCD(which is part of libdispatch)。 同样的,Foundation框架的很多类会被提到,尤其是根类NSObject,因为当前使用OC开发就意味着为Mac或者iOS开发。不管你进行哪种开发,你不可避免的会使用系统框架,像Cocoa,Cocoa Touch。
自从iOS的火爆,越来越多的开发者开始加入到OC开发的大军。其中的一些开发者可能是编程新手,也有一些具有C++或者java背景,还有一些具有web开发背景。不管属于哪一种,开发者们都应该学习如何高效的使用一门语言。只有这样做了,代码才会更高效,更易维护,更少的bug。
虽然我仅仅用了6个月来写这本书,但是创作它的过程却已经经历了很多年。当初我心血来潮买了一个iPod Touch,然后当SDK第一版放出来时候,我决定拿着它尝试开发,于是有了我的第一个app - Subnet Calc。很令我吃惊的是,它迅速获得了不少的下载量。我开始确定我将会一直从事这门我刚了解的优美的语言。从那时开始,我开始研究OC,并定期的在我的blog中记录,www.galloway.me.uk. 我对OC的内部工作机制有浓厚的兴趣,像blocks的原理,ARC的工作机制。当我终于有一个机会写一本书,我立刻抓住了这个机会。
为了使你可以从这本书得到最大的益处,我建议你直接跳跃到你最感兴趣的或者与你的工作有关的章节。每一个章节都可以独立阅读,你也可以通过交叉的索引去阅读相关的章节。每个章节都收集了相关的主题内容,因此你可以通过章节标题迅速找到相关内容。
本书读者
本书着眼于期待提高自己的Object-C编程能力的开发人员,通过本书的学习,你将会写出更高效,可维护,并少bug的代码。即使你还不是一个object-c开发者,但是只要你来自于面向对象开发阵营,例如Java或C++,那么你仍可以从本书中获益。但是注意如果你属于这种情况,那么首先选择一本Object-C的语法书是很必要而且明智的。
本书覆盖范围
本书并不会讲述Object-C的语法,关于语法你可以从很多其他的书籍或者资源中得到。它更多的是教你如何高效的使用Object-C语言。本书由多个章节组成,每一个章节分成小部分的块。所有的这些章节有序的组成多个分立的主题,安排如下:
第一章:让自己习惯Object-C
关于Object-C的常见的核心概念列于此。
第二章:对象,消息,运行时
任何面向对象的语言都会提到的重要特性:对象是如何相互联系并如何交互的。本章着重关注这些特性同时涉及了运行时的一些内容。
第三章:接口和API设计
代码几乎不会只被写一次然后从不被使用。即使它没有发布到广大的社区之中,你也很有可能在不止一个项目中使用你的代码。本章讨论了如何舒服的用Object-C写代码。
第四章;协议和类别
协议和类别都是必须掌握的重要的语言特性。在你的代码中高效的使用它们将会使代码更易读,更易维护,更少的bug。本章帮助你获取这种能力。
第五章:内存管理
Object-C使用引用计数进行内存管理,这对于新手来说一直是一个难啃的骨头,即使对于来自使用垃圾回收阵营的开发者也是如此。ARC的引入让编码更加容易,但是你必须理解很多重要内容以使你免于内存泄露的危险。本章汇集了常见的内存管理陷阱。
第六章:Block和GCD
块是被苹果引入的C的语言闭包。块在Object-C中被大量使用,以获得代码的低耦合。GCD提供了多线程编程的简单接口。块被看作是GCD中的任务被执行,并根据系统资源情况,进行并行执行。本章使你从这两种核心技术中获益。
第七章:系统框架
你通常会使用Object-C为Mac或者iOS写程序。在这些情况中,你可以使用全部的系统框架:Cocoa和Cocoa Touch。本章简述了这些框架并深入研究了其中的一些类。
如果你对本书有任何疑问,或者评论,鼓励你你联系我。你可以在本书网站www.effectiveobjectivec.com找到我的更详细的联系方式。
致谢
当被问到我是否想写一本Object-C的书时,我立马变得很兴奋。我已经看了几本其他的书籍,也了解到创作一本Object-C的书籍是一个巨大的挑战。但是在很多人的帮助下,这本书成为了现实。
本书的很多灵感来源于致力于Object-C的很多博客。MikeAsh,Matt Gallagpher,和”bbum”是这些人中的几个。这些年里,这些博客帮我逐渐获得了OC的更深入的理解。当我编写本书时,Matt Thompson写的NSHipster也给我提供了不少优秀的文章来参阅。最后,苹果提供的优秀的开发文档是极其有用的。
如果没有在MXTelecom公司工作时的大家的指导和知识分享,我是不可能完成本书的。特别是Matthew Hodgson给我了一个在当前成熟的C++代码的基础上开发了公司的第一个iOS应用的机会。我从这个项目中所得到的构成了我以后的工作的基础。
这些年来,不管是学术的缘故,抑或是仅仅出去喝杯啤酒聊天,我逐渐收获了很多优秀的伙伴。当我在写这本书的时候,他们给了我很多帮助。
和Pearson的小组的工作经历令我印象深刻。Trina MacDonald, Olivia Basegio, Scott Meyers,以及Chris Zahn都在我需要的时候给我提供过帮助和鼓励。为了让我写出时候不分心,他们给我提供了工具并在必要的时候回答我的疑问。
和我在一起的技术编辑们做了很多精彩的工作。他们用自己敏捷的眼光帮助本书做到最好。他们真的应该为自己的工作而自豪。
最后,如果没有来自妻子Helen的支持和理解,我是不可能完成本书的。当我准备写书的时候,我们的第一个孩子出生了,因此我推迟了一段时间。是Helen和Rosie伴随我经历这些并最终完成它。