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

Objective-C 2.0 Mac和iOS开发实践指南
作者 : (美)Robert Clair 著
译者 : 李强 等译
出版日期 : 2011-01-19
ISBN : 978-7-111-32927-5
定价 : 55.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 299
开本 : 16
原书名 : Learning Objective-C 2.0: A Hands-On Guide to Objective-C for Mac and iOS Developers(1E)
原出版社: Pearson Education Asia
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书集中介绍Objective-C语言,是为那些想要学习Objective-C以便为Mac OS X或iOS编写程序的程序员量身打造的(iOS用于iPhone、iPod touch和iPad)。本书分为四个部分。第一部分回顾了学习Objective-C编程所需的C语言基础知识,并简单介绍了Objective-C程序的结构。第二部分是Objective-C编程的核心知识,包括消息机制、类和对象、类对象、框架、Foundation类、控制结构、分类、特性、协议,等等。第三部分介绍了Objective-C中的高级概念,包括引用计数、垃圾收集和Objective-C 2.0的新功能块。第四部分是5个附录,提供了Objective-C程序员常用的信息和资料。本书大多数章的末尾提供了练习,帮助读者巩固在书中学到的知识。书中内容注重实用,侧重通过实例来介绍知识点和概念,对于初中级读者来说,是一本不可多得的入门实践指南。

图书特色

Objective-C 2.0 Mac和iOS开发实践指南
LEARNING OBJECTIVE-C 2.0
A HANDS-ON GUIDE TO OBJECTIVE-C FOR MAC
AND IOS DEVELOPERS
(美) Robert Clair  著   李强 等译

“当刚接触Objective-C的程序员询问该从何处开始学习时,我会推荐这本书给他们。”
—— Matt Long,Cocoa Is My Girlfriend(www.cimgf.com)网站

如果你想要学习Objective-C 2.0以便为Mac OS X、iPhone、iPod touch或iPad编写程序,本书是你的最佳选择。本书内容精练、可读性强、易于学习,是学习Objective-C 2.0的最佳入门指南。
作为资深的Mac OS X和iPhone开发者,作者从Objective-C 2.0的最新的基础知识开始深入介绍了所有内容。本书首先有效地回顾了C和面向对象编程的基础知识,然后介绍如何用Xcode创建第一个Objective-C 2.0程序。接下来介绍每种核心语言功能,从对象和类到消息、框架和协议。每一个概念都用简单的示例来阐明,很多章后都附带有动手实践的练习,方便检验学习效果。

本书主要内容
理解方法、消息和Objective-C消息系统
定义类、创建对象实例和使用类对象
使用分类扩展类而不需要子类化
使用Objective-C 2.0的声明特性简化开发
使用协议而不是类来强调行为
针对字符串、数组、字典、集合和数字对象使用常见的Foundation类
使用Objective-C控制结构,包括Objective-C 2.0的最新的快速枚举构造
理解应用程序安全以及隐藏应该保持私有的方法声明
使用Objective-C 2.0提供的最新的块功能

作者简介
Robert Clair拥有20年以上的商业图形软件和CAD软件开发经验。在过去的8年中,他主要从事Mac OS X和iPhone开发。作为Chromatic Bytes公司的负责人,他曾经设计过OS X软件(ZeusDraw和Shades)以及iPhone软件(ZeusDraw Mobile和Orfeo)。他还是多个iPhone和iPad应用程序的顾问。

图书前言

Objective-C是C语言的面向对象扩展。可以将其称为“带有对象的C”。如果你对学习Objective-C感兴趣,通过学习可以针对Mac OS X或iOS编写程序。但是,还存在学习Objective-C的另一个原因,那就是它是一门有趣的语言,并且相对容易学习。和现实世界的任何其他东西一样,Objective-C也有一些难点。但是,总体来说,它是比其他面向对象语言简单得多的一种语言,特别是和C++相比。Objective-C对C语言所进行的扩展,只需要一两页篇幅就能列举出来。
  在Apple的世界中,Objective-C并不是单独工作的。它与称为框架的两个类库一起使用。Foundation框架包含了用于基本实体的类,例如,字符串和数组,以及包装了与操作系统进行交互的类。AppKit包含了用于窗口、视图、菜单、按钮及构建图形用户界面所需的其他各种挂件的类。将这两个框架综合起来就是Cocoa。在iOS中用一个叫做UIKit的不同框架取代了AppKit。Foundation和UIKit合称为Cocoa Touch。
  Objective-C由Brad J. Cox在20世纪80年代早期创建。在1988年,由Steve Jobs在离开Apple后创建的NeXT Computer公司许可使用Objective-C,并且以其作为创建在NeXT的NeXTSTEP操作系统下运行的应用程序开发环境的基础。NeXT工程师开发了一组Objective-C库,以便构建应用程序。在NeXT于1933年减少硬件业务之后,它与Sun Microsystems合作开发了OpenStep,这是针对一种面向对象系统的开放性规范,以NeXTSTEP API为基础。Sun最终丧失了对OpenStep的兴趣。NeXT继续销售其OpenStep版本,直到Apple于1997年年初收购了NeXT。NeXTSTEP操作系统变成了Mac OS X的基础。NeXT Objective-C库变成了Cocoa的基础。
  本书集中介绍了Objective-C语言。它不是教你如何编写Cocoa程序,或者使你成为Xcode的专业用户。本书只是涉及了Foundation框架的一小部分,并且只是介绍性地提及AppKit和UIKit。本书所做出的假设是,如果你首先对Cocoa所基于的语言有一个较好的理解,那么你学习Cocoa将会变得更容易。
本书的目标读者
  本书是为那些想要学习Objective-C以便为Mac OS X或iOS编写程序的程序员量身打造的(iOS用于iPhone、iPod Touch和iPad)。尽管从技术上讲,也有可能使用其他的语言来编写完整的Mac OS X程序,但编写一个遵从Apple Human Interface Guidelines并且拥有相应的Mac观感的应用程序,则需要使用Objective-C Cocoa框架。即便你使用不同的语言,例如纯C或C++,来编写一个Mac应用程序的核心,用户界面层还是应该使用Objective-C编写。在为iOS编写程序时,程序员没有任何选择:iPhone应用程序的外层和用户界面必须使用Objective-C编写。
  对于那些想要使用来自GNUStep项目的软件为其他平台编写Objective-C程序的程序员来说,本书也很有用(GNUStep是OpenStep库的一个开源实现)。
你需要知道什么
  本书假设读者拥有C语言的使用经验。Objective-C是C的一个扩展,本书主要关注Objective-C向C中添加了什么。对于那些具有C经验的人,以及那些适合快速学习一门新语言的人来说,本书第2章和第3章对C的基本部分进行了回顾,这些基本知识是编写一个Objective-C程序很可能要用到的。如果你没有C或任何类似C(C++、Java和C#)的计算机语言的经验,那么你需要在学习本书的同时阅读一本关于C的图书。此前接触过一种面向对象语言对学习本书有帮助,但不是必需的。随着本书的推进,将会分别介绍必需的面向对象概念。
Objective-C 2.0中的新内容
  如果你已经知道一些Objective-C的知识,并且想要直接跳到2.0版新增内容的部分,那么关于这部分的知识在如下的各章中介绍:
   快速枚举(第10章)为遍历对象的一个集合提供了一种简单(且快速)的方式。
   声明特性(第12章)提供了一种简单的方式来指定一个对象的实例变量,并且让编译器为你创建访问这些变量的方法。
   垃圾收集(第15章)添加了对Objective-C的自动内存管理。
   块(第16章)允许你定义类似函数的对象,它们自身带有环境。
本书是如何组织的
  本书分为四部分:第一部分是C的概览,然后介绍面向对象编程和Objective-C。本书的第二部分详细介绍了Objective-C语言,并且对Foundation框架进行了介绍。本书的第三部分介绍了在Objective-C中使用的两种内存管理形式,以及Objective-C 2.0新添加的块功能。本书的第四部分是附录,提供了Objective-C程序员常用的信息和资料。
  第一部分  Objective-C简介
   第1章概述了C的基本知识,介绍了在编写Objective-C程序时最可能用到的C知识。
   第2章继续概述C,讨论C和Objective-C程序的内存布局,以及内存寻址和不同类型变量的生命周期。即便你熟悉C,也可能需要阅读本章。很多有经验的C程序员并不完全熟悉本章介绍的内容。
   第3章开始介绍面向对象编程的概念,并且继续探讨这些概念是如何在Objective-C中体现的。
   第4章详细介绍了一个简单的Objective-C程序的组成。还介绍了如何使用Xcode来创建一个项目,然后编译并运行一个Objective-C程序。可以使用这些知识来完成本书中其余章的练习。
  第二部分  语言基础
  对象是面向对象编程中的主要实体,它们将变量(称为实例变量)和类似函数的代码块(叫做方法)组织到一个单独的实体中。类是对象的规范。它们列出了组成一个给定的对象的实例变量和方法,并且提供了实现这些方法的代码。对象更加具体,它们是一个内存范围,类似于C结构,保存了对象的类所定义的变量。一个特定的对象称为定义了它的类的一个实例。
   第5章开始对Objective-C语言进行全面介绍。在Objective-C中可以通过向一个对象发送一条消息来让它“做某些事情”。消息是一个方法的名称加上方法所接收的任何参数。作为对接收到的消息的响应,对象会执行相应的方法。本章介绍方法、消息,以及Objective-C消息系统是如何工作的。
   第6章介绍如何定义类,以及如何创建和复制对象实例。这一章还介绍了继承,即通过扩展一个已有的类来定义一个类的过程,而不是从头开始创建一个类。
  在执行一个Objective-C程序的过程中,使用的每个类都由包含关于类的信息的一段内存来表示。这段内存叫做类的类对象。类也可以定义类方法,它是类执行的方法,而不是由类的实例执行的。
   第7章介绍类对象和类方法。与某些其他面向对象语言中的类不同,Objective-C的类没有类变量,即类的所有实例所共享的变量。这一章的最后几节介绍如何通过使用静态变量来达到类变量的效果。
   第8章介绍Apple封装动态链接库的方式。这一章介绍了框架的定义和结构,并简单介绍了在编写Mac OS X或iOS程序时将会遇到的一些常见框架。
   第9章介绍最常用的Foundation类:用于字符串、数组、字典、集合和数字对象等的类。
   第10章讨论当使用带有C控制结构的Objective-C构造时,需要考虑的一些问题。本章继续介绍Objective-C所添加的其他控制结构,包括Objective-C 2.0的新的快速枚举构造。这一章最后介绍了Objective-C的异常处理系统。
   第11章介绍如何向一个已有的类添加方法而不需要子类化它,以及如何隐藏你认为私有的方法的声明。这一章最后讨论Objective-C的安全性问题。
   第12章介绍Objective-C 2.0最新声明的特性功能。特性是一个对象的特征。特性通常由对象的实例变量来构建。设置和获取一个特性的方法叫做访问器方法。通过使用声明特性功能,你可以要求编译器合成一个特性的访问器方法,从而大大节省自己的精力。
   第13章介绍分类对象的一种不同方法。协议是定义的一组方法,一个类可以选择实现这些方法。在很多情况下,重要的不是一个对象的类,而是对象的类是否通过实现协议中声明的方法来采用一个特定的协议(可以有多个类采用一个给定的协议)。Java关于接口的概念就是借用自Objective-C协议。
  第三部分  高级概念
  Objective-C提供了两种不同的系统来管理对象内存:引用计数和自动垃圾收集。
   第14章介绍Objective-C传统的引用计数系统。引用计数也叫做保留计数或管理内存。在一个使用引用计数的程序中,每个对象保持一个计数,命名为引用计数,这是使用该对象的其他对象的数目。当这个计数减少到0的时候,就会销毁该对象。这一章介绍了正确使用引用计数所需要的规则。
   第15章介绍Objective-C的新的自动垃圾收集系统。使用垃圾收集时,有一个单独的名为垃圾收集器的线程,它负责确定哪些对象不再需要并释放它们。垃圾收集使你不必负责大多数内存管理的杂事。
   第16章介绍Objective-C的新的块功能。块类似于一个匿名函数,但是块带有其包围环境中的变量的值。块是Apple的GCD并发机制的核心功能。
  第四部分  附录
   附录A提供对编译器来说具有特殊含义的名称的一个表,以及Objective-C编译器指令的列表。编译器指令是以一个@字符开头的单词,它们是在各种条件下传给编译器的指令。
   附录B给出Foundation类的一个列表,其实例具有相同的内存布局,并且可以与来自低层级的C语言Core Foundation框架的对应的对象交互使用。
   附录C简单介绍Apple向64位计算的迁移。
   附录D。旧的“遗留”的Objective-C运行时用于32位的OS X程序,新的“现代”运行时用于在OS X 10.5 或更高版本上运行的64位Objective-C程序以及iOS程序,附录D介绍了二者之间的区别。
   附录E列出了包含对Objective-C开发者有用信息的图书和Web站点。
编译时和运行时
  当你编写程序时,有两个时刻很重要:编译时,即当你的源代码翻译成机器语言并且连接到一起形成一个可执行的程序时;还有就是运行时(也叫做执行时),即当可执行的程序作为某台计算机上的一个进程运行时。区分Objective-C和其他常用语言(特别是C++)的特征之一是,Objective-C是一种非常动态的语言。“动态”意味着其他语言在编译时所做出的决定,在Objective-C中都推迟到运行时做出。关于这一点的最突出的例子就是Objective-C的消息系统。当一个程序计算一个消息表达式时(等同于其他语言中的方法调用)所要执行的代码的部分,是在运行时确定的。
  推迟决定直到运行时,这有很多的优点,你将会在阅读本书的时候看到这些优点,但是,它也有一个显著的缺点,那就是它限制了编译器所能进行的检查的数量。当使用Objective-C编写代码时,原本在其他语言中会在编译阶段捕获的一些错误,在Objective-C中都会出现在运行时。
内存管理
  正如前面所提到的,Objective-C 2.0在使用手动引用计数系统和自动垃圾收集来管理对象内存方面提供了选择。除了第15章介绍的Objective-C 2.0的垃圾收集系统以外,本书的其他部分在所有的示例中一开始就在使用引用计数。第14章详细介绍了引用计数。
  这么做的主要原因是垃圾收集在iOS上不可用。如果你想要为iPhone、iPod Touch或iPad编写程序,就必须学习Objective-C的引用计数系统。
  从各种Objective-C和Cocoa的邮件列表中的内容来判断,引用计数可能是人们学习Objective-C的过程中引发混淆的最大源头。但是,如果你及早地学习其规则并规范地使用它们,你将会发现,实际上使用引用计数并不难。
  如果在随后的某个时刻,你想要在一个项目中使用垃圾收集,转换过程更应该是相当容易的。尽管在从引用计数迁移到垃圾收集时(第15章将介绍垃圾收集),你需要注意一些架构性的问题,但使用垃圾收集大多数时候只不过是不做那些当你使用引用计数时所要做的那些事情。
关于示例
  为一本介绍性的图书创建代码示例,这提出了一个挑战:如何不迷失在那些要构建一个能工作的程序所必需的模板文件的海洋中。在很多情况下,本书采取了使用某种程度上假设的示例,并且为了帮助你关注所讨论的要点而对其进行了简化。不相关的代码部分均已省略,或者用省略号(...)替代。
  例如:
  int averageScore = ...
  上面的代码表示averageScore是一个整数变量,其值由程序的其他某个部分获得。averageScore 值的来源对于该示例来说是不相关的,你只需要认为它有一个值就行了。
关于程序清单
  本书中的示例采用未编号的程序清单和编号的程序清单的混合编排。
   未编号的程序清单
  主要是正文中引用的较短的代码片段,示例的前后均为正文。
   编号的程序清单
  编号的程序清单有标题,并且按照它们在一章中出现的顺序来编号(例如程序清单4.1和程序清单8.3)。这些主要是较大的示例,在该章正文后面或者在该章后面的练习中会引用到它们。
  在这两种情况下,那些需要一行一行说明的示例,都给出了一个行编号,以便说明性的正文能够引用代码中特定的行。
关于练习
  本书中的大多数章最后都有一组练习。当然鼓励你完成它们。很多练习要求你编写较小的程序来验证在那一章正文中介绍的知识点。一些练习可能看上去很冗长,但是编写代码和查看结果都会提供比仅仅阅读代码更加生动的学习体验。编写较小的程序来测试你的理解,这是应该养成的宝贵习惯;对于不清楚的每个知识点,你都应该编写一个这样的程序,即便本书没有提供一个相关的练习。
  练习没有建议哪个程序需要一个用户界面。所有这些都可以通过使用一个文本编辑器来编写,并且从命令行来编译和运行它们,如第2章以前的练习所示,或者使用一个简单的Xcode项目来编辑、编译和运行它们,如第4章所介绍。

上架指导

计算机\程序设计

封底文字

“当有刚接触Objective-C的程序员询问该从何处开始学习时,我会推荐这本书给他们。”
——Matt Long,Cocoa Is My Girlfriend (www.cimgf.com)

如果你想要学习Objective-C 2.0以便为Mac OS X、iPhone、iPod touch和iPad编写程序,本书是你的最佳选择。本书内容精练、可读性强、易于学习,是学习Objective-C 2.0的最佳入门指南。

作为资深的Mac OS X和iPhone开发者,作者从Objective-C 2.0的最新创新基础知识开始深入介绍了所有内容。本书首先有效地回顾了C和面向对象编程的基础知识,然后介绍如何用Xcode创建第一个Objective-C程序。接下来介绍每种核心语言功能,从对象和类到消息、框架和协议。每一个概念都用简单的示例来阐明,很多章后都附带有动手实践的练习,方便检验学习效果。

本书主要内容:
理解方法、消息和Objective-C消息系统
定义类、创建对象实例和使用类对象
使用分类扩展类而不需要子类化
使用Objective-C 2.0的声明特性简化开发
使用协议而不是类来强调行为
针对字符串、数组、字典、集合和数字对象使用常见的Foundation类
使用Objective-C控制结构,包括Objective-C 2.0的最新的快速枚举构造
理解应用程序安全以及隐藏应该保持私有的方法声明
使用Objective-C 2.0提供的最新的块功能

作者简介

(美)Robert Clair 著:Robert Clair拥有20年以上的商业图形软件和CAD软件开发经验。在过去的8年中,他主要从事Mac OS X和iPhone开发。作为Chromatic Bytes公司的负责人,他曾经设计过OS X软件(ZeusDraw和Shades)以及iPhone软件(ZeusDraw Mobile和Orfeo)。他还是多个iPhone和iPad应用程序的顾问。

译者简介

李强 等译:暂无简介

译者序

当今移动互联网正在推动互联网第三波浪潮的到来。根据摩根士丹利的调查报告,2010年全球的移动互联网用户已达到10亿人,产值近千亿美元。而中国的手机上网用户也已达到2.77亿个,由此产生的市场总值在200亿元人民币左右。移动互联网不仅将深入改变人们的生活方式,而且会造就一个又一个新的数字财富英雄。
  在移动互联网浪潮中,移动应用开发将起到重要作用。App Store的成功模式给移动应用开发搭建了良好的商业模式和环境。目前有越来越多的开发者加入到移动开发的队伍中。而基于Mac OS和iPhone的移动应用开发则是其中重要的一个分支。
  Objective-C最初由Smalltalk演变而来,它是基于C语言的面向对象扩展。目前,Objective-C 是Mac OS的首要开发语言,也是GNUstep 在Linux 和其他平台上的开发语言。随着基于Mac OS和iPhone、iPad开发的兴起,Objective-C受到越来越多的关注,其流行度也在不断攀升。在TIOBE编程语言排行榜2010年10月的榜单中,Objective-C排在第8位,而与去年相比,Objective-C的份额提升最多,达到2.54%,同时入选了2010年度语言。因此,关注与学习Objective-C的人越来越多。
  本书集中介绍了Objective-C语言,专门为那些想要学习Objective-C以便为Mac OS X或iOS编写程序的程序员量身打造(iOS用于iPhone、iPod Touch和iPad)。本书分为四部分。第一部分回顾了学习Objective-C编程所需的C语言基础知识,并简单介绍了Objective-C程序的结构。第二部分介绍    Objective-C编程的核心知识,包括消息机制、类和对象、类对象、框架、Foundation类、控制结构、分类、特性、协议,等等。第三部分介绍了Objective-C中的高级概念,包括引用计数、垃圾收集和Objective-C 2.0的新功能块。第四部分包括5个附录,分别提供了Objective-C程序员常用的信息和资料。本书大多数章末都提供了练习,以帮助读者巩固在书中学到的知识。本书内容注重实用,侧重通过示例来介绍知识点和概念,因此本书对于初中级程序员来说,是一本不可多得的入门实践指南。
  参加本书翻译的有李强、关志兴、王建勇、毛立涛、闫柳青、姜巧生、沈海峰、谢扣林、乔义峰、刘查强、王义强、刘国际、杨传辉和王建华等。读者在阅读过程中如有疑问,可通过translatebook@163.com与译者联系交流。

图书目录

对本书的赞誉
译者序
前言
致谢
第一部分  Objective-C简介
第1章 C,Objective-C的基础 2
1.1 C程序的结构 3
1.1.1 main函数 3
1.1.2 格式化 3
1.1.3 注释 4
1.1.4 变量和函数名 4
1.1.5 命名惯例 5
1.1.6 文件 5
1.2 变量 6
1.2.1 整数类型 6
1.2.2 浮点类型 7
1.2.3 真值 7
1.2.4 初始化 7
1.2.5 指针 8
1.2.6 数组 9
1.2.7 字符串 10
1.2.8 结构 10
1.2.9 typedef 12
1.2.10 枚举常量 12
1.3 运算符 12
1.3.1 算术运算符 12
1.3.2 余数运算符 13
1.3.3 自增和自减运算符 13
1.3.4 优先级 13
1.3.5 取反 14
1.3.6 比较 14
1.3.7 逻辑运算符 14
1.3.8 逻辑取反 15
1.3.9 赋值运算符 15
1.3.10 转换和强制类型转换 16
1.3.11 其他赋值运算符 16
1.4 表达式和语句 17
1.4.1 表达式 17
1.4.2 计算表达式 17
1.4.3 语句 18
1.4.4 复合语句 18
1.5 程序流程 18
1.5.1 if 18
1.5.2 条件表达式 19
1.5.3 while 20
1.5.4 do-while 20
1.5.5 for 20
1.5.6 break 21
1.5.7 continue 22
1.5.8 逗号表达式 22
1.5.9 switch 22
1.5.10 goto 23
1.5.11 函数 24
1.5.12 声明函数 25
1.6 预处理器 26
1.6.1 包含文件 26
1.6.2 #define 26
1.6.3 条件编译 27
1.7 printf 28
1.8 使用gcc和gdb 29
1.9 小结 30
1.10 练习 30
第2章 C变量 33
2.1 Objective-C程序的内存布局 33
2.2 自动变量 34
2.3 外部变量 35
2.4 声明关键字 35
2.4.1 auto 35
2.4.2 extern 36
2.4.3 static 36
2.4.4 register 37
2.4.5 const 37
2.4.6 volatile 37
2.5 作用域 38
2.5.1 自动变量的作用域 38
2.5.2 复合语句和作用域 38
2.5.3 外部变量的作用域 39
2.6 动态分配 39
2.7 小结 41
2.8 练习 42
第3章 面向对象编程简介 43
3.1 面向对象编程 43
3.1.1 类和实例 43
3.1.2 方法 44
3.1.3 封装 44
3.1.4 继承 44
3.1.5 多态 45
3.1.6 面向对象语言的主要特点是什么 45
3.2 Objective-C简介 45
3.2.1 定义类 46
3.2.2 类名作为类型 48
3.2.3 消息(调用方法) 48
3.2.4 类对象和对象创建 50
3.2.5 内存管理 51
3.3 Objective-C添加 51
3.3.1 运行时 51
3.3.2 名称 52
3.3.3 消息表达式 52
3.3.4 编译器指令 52
3.3.5 直接量字符串 52
3.3.6 Objective-C关键字 53
3.3.7 Cocoa数字类型 55
3.4 小结 56
第4章 第一个Objective-C程序 57
4.1 使用Xcode构建 57
4.2 Objective-C程序结构 59
4.3 面向对象的Hello World 61
4.3.1 Greeter.h 63
4.3.2 Greeter.m 65
4.4 HelloObjectiveC.m 68
4.5 小结 69
4.6 练习 70
第二部分 语言基础
第5章 消息 72
5.1 方法 72
5.1.1 一个简单的方法 72
5.1.2 带有参数的方法 73
5.2 消息 74
5.3 消息细节 76
5.3.1 嵌套 76
5.3.2 向nil发送消息 77
5.3.3 向self发送消息 78
5.3.4 覆盖并向super发送消息 78
5.3.5 选择器 80
5.3.6 具有相同名称的方法 81
5.3.7 动态类型和静态类型 82
5.4 幕后工作 83
5.5 消息转发 84
5.6 效率 85
5.7 内省和其他运行时乐趣 87
5.8 小结 88
5.9 练习 88
第6章 类和对象 90
6.1 定义类 90
6.1.1 接口部分 90
6.1.2 @class指令 91
6.1.3 实现部分 92
6.1.4 导入 92
6.2 子类化一个类 93
6.2.1 定义一个子类 93
6.2.2 子类示例 94
6.2.3 类继承 97
6.2.4 类层级示例 97
6.2.5 抽象类 98
6.3 创建对象 99
6.3.1 对象分配 99
6.3.2 对象初始化 100
6.4 销毁对象 106
6.5 复制对象 107
6.5.1 浅复制和深复制 108
6.5.2 可变复制和不可变复制 108
6.5.3 在自己的类中实现复制 109
6.6 小结 111
6.7 练习 112
第7章 类对象 113
7.1 类对象 113
7.1.1 类类型 114
7.1.2 类方法 115
7.2 其他类方法 116
7.2.1 简便构造函数 116
7.2.2 单体 118
7.2.3 初始化类 118
7.3 模拟类变量 120
7.4 小结 124
7.5 练习 125
第8章 框架 127
8.1 什么是框架 127
8.2 Cocoa框架 128
8.3 AppKit 129
8.4 Core Foundation 130
8.4.1 Core Foundation对象的内存管理 131
8.4.2 自由转换 132
8.5 Core Graphics 133
8.6 Core Animation 133
8.7 其他Apple提供的框架 134
8.8 第三方框架 134
8.9 幕后揭秘 135
8.10 小结 135
第9章 常用Foundation类 136
9.1 可变类和不可变类 136
9.2 类簇 136
9.3 NSString 137
9.3.1 NSString示例 138
9.3.2 C字符串和NSString之间的转换 140
9.3.3 直接量字符串 141
9.4 集合类 141
9.4.1 NSArray 141
9.4.2 NSDictionary 144
9.4.3 NSSet 145
9.5 NSNumber 146
9.6 NSNull 147
9.7 NSData 148
9.7.1 访问NSData的字节 149
9.7.2 文件和NSData之间的转换 149
9.8 NSURL 149
9.9 结构 150
9.10 小结 151
9.11 练习 151
第10章 Objective-C中的控制结构 153
10.1 if语句 153
10.2 for语句和隐式循环 156
10.2.1 for语句 156
10.2.2 隐式循环 156
10.2.3 带有块的隐式循环 157
10.3 while语句和NSEnumerator 157
10.4 快速枚举 159
10.5 一个使用快速枚举的示例 161
10.6 异常 164
10.6.1 抛出自己的异常 165
10.6.2 多个@catch语句块 166
10.6.3 嵌套异常处理 167
10.6.4 使用异常 168
10.6.5 应该使用异常吗 168
10.7 小结 170
10.8 练习 170
第11章 分类、扩展和安全 172
11.1 分类 172
11.1.1 使用分类覆盖方法 174
11.1.2 分类的其他用法 175
11.2 扩展 176
11.3 实例变量作用域(访问控制) 177
11.4 对方法的访问控制 178
11.5 命名空间 179
11.6 安全 179
11.7 从Objective-C调用C函数 181
11.7.1 技术上 181
11.7.2 实践上 182
11.7.3 哲学上 182
11.8 小结 182
11.9 练习 182
第12章 特性 184
12.1 在对象之外访问实例变量(不要这么做) 184
12.2 声明和实现访问器 185
12.3 使用特性的访问器 187
12.4 @property语句 189
12.4.1 assign、retain和copy 189
12.4.2 readwrite和readonly 190
12.4.3 nonatomic 190
12.4.4 setter=nam和getter=name 191
12.4.5 attributes和@dynamic 191
12.5 关于@dynamic的更多内容 191
12.6 特性和内存管理 193
12.7 子类化和特性 194
12.8 对readonly特性隐藏setter 195
12.9 特性作为文档 195
12.10 点语法 196
12.10.1 点语法和特性 197
12.10.2 点语法和C结构 198
12.11 小结 199
12.12 练习 199
第13章 协议 201
13.1 协议 201
13.2 使用协议 202
13.2.1 声明一个协议 202
13.2.2 采用协议 203
13.2.3 协议作为类型 203
13.2.4 特性和协议 203
13.3 TablePrinter示例 204
13.3.1 TablePrinterDataSource 205
13.3.2 TablePrinter 205
13.3.3 FruitBasket 207
13.3.4 main 209
13.3.5 一个问题 210
13.3.6 实现可选的方法 210
13.4 协议对象和一致性测试 211
13.5 非正式协议 212
13.6 小结 212
13.7 练习 213
第三部分 高级概念
第14章 引用计数 216
14.1 问题 216
14.2 引用计数 217
14.3 接受对象 219
14.4 所有权 221
14.5 dealloc 222
14.6 返回对象 223
14.6.1 autorelease 224
14.6.2 自动释放池 224
14.6.3 管理自动释放池 225
14.6.4 回顾简便构造函数 226
14.6.5 自动释放和iPhone 226
14.6.6 使用额外的自动释放池来控制内存使用 226
14.7 retainCount 227
14.8 多线程 228
14.9 何时引用计数不好 229
14.10 保留循环 230
14.11 最后说再见:曲终人散时 233
14.12 小结 233
14.13 练习 234
第15章 垃圾收集 236
15.1 垃圾收集:理论 236
15.2 垃圾收集:实践 237
15.3 使用垃圾收集器 238
15.4 终结器 240
15.5 malloc和垃圾收集 241
15.6 Core Foundation对象和垃圾收集 241
15.7 过程中的一些难点 242
15.7.1 AppKit中的透明指针问题 242
15.7.2 内部指针 245
15.7.3 错误的根对象 246
15.8 垃圾收集的优点和缺点 246
15.8.1 积极方面 246
15.8.2 消极方面 246
15.8.3 应该使用垃圾收集吗 246
15.9 小结 247
15.10 练习 247
第16章 块 251
16.1 函数指针 251
16.1.1 用函数指针调用一个函数 253
16.1.2 使用函数指针 253
16.2 使用函数指针的问题 255
16.3 NSInvocation 256
16.4 块 258
16.4.1 块指针 258
16.4.2 访问变量 259
16.4.3 块变量 261
16.4.4 块是基于栈的 261
16.4.5 全局块 262
16.4.6 块是Objective-C对象 262
16.4.7 复制块 262
16.4.8 块的内存管理 263
16.4.9 陷阱 265
16.4.10 Cocoa中的块 266
16.4.11 样式问题 269
16.5 一些原理上的限制 270
16.6 小结 270
16.7 练习 270
第四部分 附录
附录A 保留字和编译器指令 274
附录B 自由转换类 275
附录C 32位和64位 276
附录D 运行时,旧的和新的 279
附录E Objective-C的资源 282

教学资源推荐
作者: [美] 凯·霍斯特曼(Cay Horstmann) 著
作者: [美]沙伦·比奥卡·扎卡沃(Sharon Biocca Zakhour) 索娅·坎南(Sowmya Kannan) 雷蒙德·盖拉多(Raymond Gallardo) 著
作者: [美]梁勇(Y.Daniel Liang) 著
参考读物推荐
作者: (哈萨克斯坦)贝特·麦克哈贝尔(Bater Makhabel) 著