##前言
Objective-C很复杂,Objective-C过时了. Objective-C很丑陋。我听说过很多对Objective-C的抱怨。相反,我发现它很智能,容易扩展并且优美。然而,如果你想发现这些优点,你必须不仅仅理解它的基础,还需要理解特殊的用法,潜在的难点和复杂的细节,而这些正是本书的主题。
###关于本书
本书不会教你关于Objective-C的基本语法。 我们假定你已经知道了这些。相反,本书会告诉你如何使用语言,写出更好的代码来完美的达到目的。Objective-C特别动态,需要感谢Smalltalk的基础。很多编译器需要做的事情在Objective-C中已经由运行时完成了。这样可以在测试过程过代码还能正常的执行,尽管在产品中会被奇怪的打散在不同的行里。能够在第一时间避免这些问题才是写出好代码的最好方案。
严格来说,这里讲的很多主题并不是都和核心Objective-C有关。引用在系统库里被独立出来,像Grand Central Dispatch, libdispatch的一部分。同样的,Foundation框架中的许多类,不仅仅是根类NSObject也被列了出来,因为使用现代的Objective-C意味着可以同时为Mac OS X或者iOS开发。为其中任何一个平台开发的时候,你将毫无疑问的使用系统框架,被人熟知的Cocoa和Cocoa Touch。
随着iOS平台增长,很多开发者正在加入到Objective-C开发大军中。一些开发者是编程新手,还有一些可能是Java或者C++背景转过来的,还有些则是具有网络开发的背景。无论如何,所有开发者豆应该花时间去高效的学习这门语言。这样写出的代码更高效,更容易维护,更少的出现BUG。
尽管我写这本书只用了短短六个月,但这些都是数年的积累。我在第一个SDK发布的时候,专门买了个iPod Touch,我决定开始编程。然后开发了我的第一个"App", Subnet Calc, 它的下载数量超过了我的想象。我开始确认我的未来就要献给这个优美的语言了,尽管我已经知道。从那个时候起,我就一致研究Objective-C, 经常的在我的个人站里写博客, www.golloway.me.uk/。 我对内部工作原理很感兴趣,诸如块的实现,ARC如何工作。当我由机会写一本关于这们语言的书的时候,展现这些原理的机会来了。
为了更好的从这本书中学到东西,我鼓励你全身心的投入进去,关注你当前工作相关的或者你最感兴趣的。每一个案例都可以单独的月底,你也可以一起阅读关联的主题。每一个部分包含了相关的几个主题,你最好使用部分快速的引导你发现语言某种特征相关的案例。
###本书面向的读者
本书旨在帮助开发着更好的理解Objective-C,从而写出可维护的,高效的,尽可能少出BUG的代码。及时你已经是其他面向对象的开发者,诸如Java或者C++, 还不是一个Objective-C开发者, 你还是可以学到很多东西。这样的话,阅读一下Objective-C的语法还是很明智的。
Objective-C基础不是本书的内容,你可以从其他的书籍或者渠道学习基础知识。相反,这本书告诉你如何高效的使用这门语言。本书分几个部分,每一个豆涵盖了一些主题。这些主题被逻辑分为下面几个部分:
- 语言相关的核心概念
- 面向对象重要的概念,对象间如何组织在一起以及他们如何通信。本部分覆盖了这几个特点,还包含了部分运行时。
- 代码很少被写过一次就不再用到了。即使它没有发布到更大的社区,你还是有可能在不止一个工程或者项目种用到。这一部分解释如果用Objective-C写出良好的类。
- 协议和类别对于精通者来说时很重要的两个语言特征。正确高效的使用他们,可以让你的代码更容易阅读,更稳定,更少出现BUG。这部分帮助你精通。
- Objective-C的内存管理模型使用了引用计数,对于新手来说困扰了他们很久。尤其是来自使用自动垃圾回收的那些开发者们。自动引用计数(ARC)的引入使用生活简单了许多,但你还是要注意很多事情保证不会出现内存泄漏的正确的对象模型。这一章关注内存管理的容易忽视的几个点。
- 被苹果引入的块编程,来自于C。在Objectivie-C中,块编程经常用来解决一下模版方法或者分离代码。Grand Central Dispatch(GCD)为线程提供了一个简单接口。块编程被理解为可以执行的GCD任务,有可能并行执行,取决于系统资源。这一章帮助你理解这两个核心概念。
- 你会经常为Mac OS X或者iOS写Objective-C代码。这种情况下,你需要尤其了解系统框架:Cocoa和Cocoa Touch。这一部分会简要概述这两个框架,并且深入其中几个类。
如果你对本书有任何疑问,评论或者观点,你可以随时联系我。你可以在关于这本书的网站:www.effectiveobjectivec.com上找到我的所有联系信息。