序言

Objetive-C在IT行业可谓受到了不公平的对待。尽管它很强大,并且是动态的面向对象语言,但却没有像C++、Java等语言一样得到足够认可。

在为iPhone OS 3写Cocoa Touch时,我意识到了需要写一本配套的书,以帮助新手们在接触Cocoa和Cocoa Touch等高层框架之前克服学习Objective-C的障碍。

所以当有人请我写一本专门介绍Objective-C语言的书时,我欣然接受了。

最后,我感觉到可以通过这本书向Mac、iPhone和iPad开发新手们介绍基础知识,因此万分激动。我期待这本书可以催化Objective-C在更多不同平台上发展。Objective-C完全有理由在Unix、Windows等平台上使用。

读者只需具备有限的计算机知识。我会从最基础的知识开始阐述,但是你至少需要懂得一些操作计算机的基础知识。

如果你已经熟悉了其他一些编程语言,这也不会有任何负面影响。我介绍的一些东西对你而言可能是一种回顾,不要担心,你会学到很多关于Objective-C的细节。

如果你接触过Objective-C,希望你可以在本书中发现一些有价值的新信息。我会努力将这些知识设计得便于你查找。这样一来,你无需逐页浏览,就能跳到某一部分并了解如何完成你想完成的任务。

对于本书中使用的一些约定,我尽量确保一致,同时尽量遵照苹果的约定。唯一一个比较明显的例外就是使用“方法”来表示实例和类的函数。苹果通常会倾向于使用“消息”。某种程度上这是缘于Objective-C受到Smalltalk的影响。

关于键盘快捷方式,我选用“Command键”这一术语来表示多数苹果键盘上空格键左侧的键。大家可能知道它也叫苹果键,因为就在几年前它上面会印有一个苹果标志。此外Command键旁边的键称为Option键,Option键旁边的就是Control键。 这些是和苹果文档的约定保持一致的。

关于存储对象的变量,我通常会把它们称作“实例变量”。有些书会习惯用该术语或者其缩写“ivar”来指代作为类的一部分的变量。对此,我喜欢使用“成员变量”。在我看来,成员变量可以是实例变量,但不是所有的实例变量都是成员变量。

在文中提及方法时,我会遵照苹果引用它们的约定:使用方法名,但不包括参数。比如以下方法:

-(void)someMethodUsingParam1:(NSString *)param1 andParam2:(NSString *)param2;

就会被写做:-someMethodUsingParam1:andParam2。如果它是一个类方法,打头的连字符就会被替换成一个+号,就像你在写类定义中的方法一样。

关于示例代码,在需要构建完整项目的章节,通常我会尽可能提供代码的完整列表。在没有提供的情况下,你可以从本书网站上下载包含图片资源和其他相关支持文件的项目。有部分章节可能无法创建一个完整的项目来展示相关技术。在这种情况下,代码列表可能只是一些片段,你可用作自定义代码的基础。由于这些代码片段无法构成功能完整的项目,在网站上也就没有提供示例项目。

我希望你在阅读本书时会有一种和我写作时一样的愉悦体验。在我看来,一本好的技术书的标志就是它不会被束之高阁。它会被好好地放在书桌上或者书桌旁,因为经常需要翻阅它。我希望这本书在你的手中也会有这样的地位,并且希望它书角翘起、封面破损,每页都留有潦草的笔迹,但仍然能在未来几年对你有所帮助。

Jiva DeVoe

book@random-ideas.net

目录

  • 版权声明
  • 致谢
  • 序言
  • 第一部分 Objective-C简介
  • 第1章 Objective-C简介
  • 第2章 基本语法
  • 第3章 添加对象
  • 第4章 Objective-C内存管理
  • 第二部分 更多特性
  • 第5章 代码块
  • 第6章 键值编码和键值观察
  • 第7章 使用协议
  • 第8章 扩展现有类
  • 第9章 编写宏
  • 第10章 错误处理
  • 第三部分 使用 Foundation 框架
  • 第11章 了解框架之间如何配合工作
  • 第12章 使用字符串
  • 第13章 使用集合
  • 第14章 使用NSValue、NSNumber和NSData
  • 第15章 处理时间和日期
  • 第四部分 高级主题
  • 第16章 通过多个线程实现多处理
  • 第17章 Objective-C设计模式
  • 第18章 利用NSCoder读写数据
  • 第19章 在其他平台上使用Objective-C