具体描述
内容简介:
Objective-C是一门面向对象、通用、高级、强大的编程语言。它有着优雅的编程环境,并发扬了C语言的优秀特性,是苹果的iOS和OS X操作系统的主要编程语言。
本书全面系统地讲述了Objective-C的基础知识和面向对象编程的重要概念,结合实例介绍了Cocoa工具包的优秀特性及框架,以及继承、复合、对象初始化、类别、协议、内存管理和源文件组织等重要编程技术,教你如何针对iOS或OS X用户界面编写出优秀的应用程序。另外,本书第2版新增内容有:
1. Objecitve-C最新特性:代码块、ARC、类扩展;
2. 新增工具Clang静态分析器和GCD;
3. 如何使用UIKit框架开发精致的iOS应用程序;
4. 如何使用最新版本的Xcode。
无论你是初次接触Objective-C和Cocoa,还是已有丰富的C语言、C++或者Java编程经验,本书都能让你轻松过渡并熟练掌握Objective-C!
作者简介
作者简介:
Scott Knaster
Mac开发界传奇人物,曾就职于苹果公司,帮助开发人员编写早期平台的Mac软件。目前在谷歌工作,负责维护Google Mac Blog。著有多部程序员必读的经典著作,如How to Write Macintosh Software、Hacking Mac OS X Tiger和Macintosh Programming Secrets。
Waqar Malik
UNIX迷,Macintosh控。早期曾就职于苹果公司,帮助开发Cocoa和Unix。目前创立了技术咨询公司Crimson Research,从事Cocoa应用开发工作。
Mark Dalrymple
资深Mac和Unix程序员,有20多年开发经验,曾开发过跨平台工具包、因特网发布工具、高性能Web服务器和终端用户桌面应用。另外,他还与人合著过Core Mac OS X and Unix Programming和Advanced Mac OS X Programming(《Mac OS X高级编程权威指南》)。
译者简介:
周庆成
江西南昌人,毕业于上海海洋大学数学系。曾在日企工作,拥有多年互联网与移动应用开发经验,对iOS、Android等移动系统拥有极大兴趣,熟练使用Cocos2d-x与Unity3D等引擎,开发过iPad版三人斗地主等游戏,爱好广泛,在各种系统平台与编程语言上都有研究。目前居住于上海,从事游戏与网络应用开发。
目录信息
第1章 启程 1
1.1 预备知识 1
1.2 历史 1
1.3 内容简介 2
1.4 准备工作 3
1.5 小结 5
第2章 对C的扩展 6
2.1 最简单的Objective-C程序 6
2.2 解构Hello Objective-C程序 10
2.2.1 #import语句 10
2.2.2 框架 11
2.2.3 NSLog()和@"字符串" 11
2.3 布尔类型 14
2.4 小结 18
第3章 面向对象编程的基础知识 19
3.1 间接 19
3.1.1 变量与间接 20
3.1.2 使用文件名的间接 22
3.2 在面向对象编程中使用间接 28
3.2.1 过程式编程 28
3.2.2 实现面向对象编程 34
3.3 有关术语 37
3.4 Objective-C语言中的OOP 38
3.4.1 @interface部分 38
3.4.2 @implementation部分 41
3.4.3 实例化对象 43
3.4.4 扩展Shapes-Object程序 45
3.5 小结 47
第4章 继承 48
4.1 为何使用继承 48
4.2 继承的语法格式 51
4.3 继承的工作机制 53
4.3.1 方法调度 54
4.3.2 实例变量 55
4.4 重写方法 57
4.5 小结 59
第5章 复合 61
5.1 什么是复合 61
5.2 自定义NSLog() 62
5.3 存取方法 65
5.3.1 设置engine属性的存取方法 66
5.3.2 设置tires属性的存取方法 67
5.3.3 Car类代码的其他变化 68
5.4 扩展CarParts程序 69
5.5 复合还是继承 70
5.6 小结 71
第6章 源文件组织 72
6.1 拆分接口和实现 72
6.2 拆分Car程序 75
6.3 使用跨文件依赖关系 77
6.3.1 重新编译须知 78
6.3.2 让汽车跑一会儿 79
6.3.3 导入和继承 81
6.4 小结 82
第7章 深入了解Xcode 84
7.1 窗口布局一览 84
7.2 改变公司名称 85
7.3 使用编辑器的技巧 86
7.4 在Xcode的帮助下编写代码 87
7.4.1 首行缩进(美观排版) 88
7.4.2 代码自动完成 88
7.4.3 括号配对 90
7.4.4 批量编辑 91
7.4.5 代码导航 94
7.4.6 集中精力 96
7.4.7 使用导航条 97
7.4.8 获取信息 98
7.5 调试 101
7.5.1 暴力测试 101
7.5.2 Xcode的调试器 101
7.5.3 精巧的调试符号 101
7.5.4 开始调试 101
7.5.5 检查程序 104
7.6 备忘表 105
7.7 小结 106
第8章 Foundation Kit介绍 107
8.1 稳固的Foundation 107
8.2 使用项目样本代码 107
8.3 一些有用的数据类型 108
8.3.1 范围 108
8.3.2 几何数据类型 109
8.4 字符串 109
8.4.1 创建字符串 110
8.4.2 类方法 110
8.4.3 关于大小 111
8.4.4 字符串比较 111
8.4.5 不区分大小写的比较 112
8.4.6 字符串内是否还包含别的字符串 113
8.4.7 可变性 114
8.5 集合大家族 115
8.5.1 NSArray 115
8.5.2 可变数组 119
8.5.3 枚举 120
8.5.4 快速枚举 121
8.5.5 NSDictionary 122
8.5.6 请不要乱来 124
8.6 其他数值 124
8.6.1 NSNumber 124
8.6.2 NSValue 125
8.6.3 NSNull 126
8.7 示例:查找文件 126
8.8 小结 130
第9章 内存管理 131
9.1 对象生命周期 131
9.1.1 引用计数 132
9.1.2 对象所有权 134
9.1.3 访问方法中的保留和释放 134
9.1.4 自动释放 136
9.1.5 所有对象放入池中 136
9.1.6 自动释放池的销毁时间 137
9.1.7 自动释放池的工作流程 138
9.2 Cocoa的内存管理规则 140
9.2.1 临时对象 141
9.2.2 拥有对象 141
9.2.3 垃圾回收 143
9.2.4 自动引用计数 144
9.3 异常 154
9.3.1 与异常有关的关键字 155
9.3.2 捕捉不同类型的异常 156
9.3.3 抛出异常 156
9.3.4 异常也需要内存管理 157
9.3.5 异常和自动释放池 158
9.4 小结 159
第10章 对象初始化 160
10.1 分配对象 160
10.1.1 初始化对象 160
10.1.2 编写初始化方法 161
10.1.3 初始化时要做些什么 162
10.2 便利初始化函数 163
10.3 更多部件改进 164
10.3.1 Tire类的初始化 165
10.3.2 更新main()函数 166
10.3.3 清理Car类 168
10.4 Car类的内存清理(垃圾回收方式和ARC方式) 171
10.5 指定初始化函数 172
10.5.1 子类化问题 173
10.5.2 Tire类的初始化函数改进 后的版本 175
10.5.3 添加AllWeatherRadial类 的初始化函数 175
10.6 初始化函数规则 176
10.7 小结 176
第11章 属性 177
11.1 使用属性值 177
11.1.1 简化接口代码 178
11.1.2 简化实现代码 179
11.1.3 点表达式的妙用 182
11.2 属性扩展 183
11.2.1 名称的使用 186
11.2.2 只读属性 188
11.2.3 自己动手有时更好 189
11.2.4 特性不是万能的 189
11.3 小结 189
第12章 类别 191
12.1 创建类别 191
12.1.1 开始创建类别 192
12.1.2 @interface部分 193
12.1.3 @implementation部分 194
12.1.4 类别的缺陷 195
12.1.5 类别的优势 196
12.1.6 类扩展 196
12.2 利用类别分散实现代码 197
12.3 通过类别创建前向引用 200
12.4 非正式协议和委托类别 201
12.4.1 ITunesFinder项目 202
12.4.2 委托和类别 204
12.4.3 响应选择器 205
12.4.4 选择器的其他应用 206
12.5 小结 206
第13章 协议 207
13.1 正式协议 207
13.1.1 声明协议 207
13.1.2 采用协议 208
13.1.3 实现协议 209
13.2 复制 209
13.2.1 复制Engine 210
13.2.2 复制Tire 211
13.2.3 复制Car 212
13.2.4 协议和数据类型 215
13.3 Objective-C 2.0的新特性 215
13.4 委托方法 216
13.5 小结 218
第14章 代码块和并发性 219
14.1 代码块 219
14.1.1 代码块和函数指针 219
14.1.2 Objective-C变量 223
14.2 并发性 224
14.2.1 同步 224
14.2.2 队列也要内存管理 227
14.2.3 操作队列 229
14.3 小结 231
第15章 AppKit简介 232
15.1 构建项目 232
15.2 创建委托文件的@interface部分 234
15.3 Interface Builder 235
15.4 设计用户界面 236
15.5 创建连接 239
15.5.1 连接输出口(IBOutlet) 239
15.5.2 连接操作(IBAction) 240
15.6 应用程序委托的实现 242
15.7 小结 244
第16章 UIKit简介 245
16.1 视图控制器 249
16.2 小结 263
第17章 文件加载与保存 264
17.1 属性列表 264
17.1.1 NSDate 264
17.1.2 NSData 265
17.1.3 写入和读取属性列表 266
17.1.4 修改对象类型 267
17.2 编码对象 268
17.3 小结 273
第18章 键/值编码 274
18.1 入门项目 274
18.2 KVC简介 276
18.3 键路径 277
18.4 整体操作 278
18.4.1 休息一下 279
18.4.2 快速运算 282
18.5 批处理 284
18.6 nil仍然可用 285
18.7 处理未定义的键 286
18.8 小结 287
第19章 使用静态分析器 288
19.1 静态工作 288
19.1.1 开始分析 288
19.1.2 协助分析器 292
19.1.3 了解更多 293
19.2 小结 295
第20章 NSPredicate 296
20.1 创建谓词 296
20.2 计算谓词 297
20.3 数组过滤器 298
20.4 格式说明符 299
20.5 运算符 300
20.5.1 比较和逻辑运算符 300
20.5.2 数组运算符 301
20.6 有SELF就足够了 302
20.7 字符串运算符 304
20.8 LIKE运算符 304
20.9 结语 305
附录 从其他语言转向Objective-C 306
索引 314
· · · · · · (收起)
读后感
这本书虽然现在看有点过时了,但是基础的东西比较易懂,值得新手入门一看,一些概念还是阐述得挺不错的。之前自己有了解过一点oc的知识,当时看的时候感觉比较懵懂,现在看起来好很多了,有些知识有种恍然一醒的感觉。
书不错,翻译的也不错。很适合学习其他语言的转向Objective-C。翻译的质量也还行,不像很多同学说的那样,起码很用心,错误肯定是有的,不知道是翻译还是原文的问题。 纸张和印刷一般 书不算厚,很快就能看完
用户评价
我是一名有着一定编程基础的开发者,之前主要接触的是其他语言。当我决定学习Objective-C以便开发iOS应用时,我试读了市面上几本书,最终选择了这本《Objective-C基础教程》。让我印象深刻的是,这本书并没有将Objective-C的语法进行孤立的讲解,而是将其置于Cocoa Touch框架的大背景下进行阐述。这意味着,读者在学习Objective-C语言本身的同时,也在潜移默化地了解iOS开发的基本原理和常用API。书中对于Objective-C的特性,比如Categories、Protocols、Blocks等,都进行了非常系统和深入的讲解,并且详细说明了它们在实际开发中的应用场景。我尤其喜欢书中关于Blocks的章节,作者用清晰的图示和代码演示,将这个相对抽象的概念解释得淋漓尽致,让我能够轻松地理解和使用Blocks来简化代码,实现更灵活的功能。此外,书中还讨论了一些与Objective-C相关的设计模式,并结合了实际的iOS开发案例,这对于提升我的代码设计能力非常有帮助。这本书的价值在于,它不仅仅是一本语言教程,更是一本能够帮助开发者快速融入iOS生态的入门指南。
在众多Objective-C的学习资源中,这本书给我留下了极为深刻的印象。我最欣赏的是作者处理复杂概念时的“循序渐进”和“由浅入深”的方法。对于初学者来说,Objective-C的语法和面向对象的设计理念可能一开始会显得有些陌生,但这本书能够巧妙地将这些概念拆解成易于理解的单元,并且通过大量的图解和实例,让读者能够逐步建立起清晰的认知。我记得书中对“属性”(Properties)的讲解,不仅仅是简单地介绍`@property`关键字,还深入剖析了setter和getter方法的实现原理,以及各种属性修饰符(如`nonatomic`、`atomic`、`readonly`、`readwrite`、`assign`、`retain`、`copy`等)的实际意义和使用场景。这一点对于理解Objective-C的对象生命周期管理至关重要。而且,书中对于Cocoa Touch框架中的一些核心类,如`NSString`、`NSArray`、`NSDictionary`等,都进行了详细的介绍,并给出了如何高效地使用它们进行数据处理的建议。这本书的优点在于,它能够真正地为读者打下坚实的基础,让学习者在掌握Objective-C语言的同时,也能够对iOS开发的常用框架有初步的了解,为今后的深入学习铺平道路。
这本书的出版,无疑为Object-C的初学者打开了一扇通往全新编程世界的大门。我尤其欣赏的是作者在讲解基础概念时所展现出的耐心和细致。在初学阶段,很多时候我们会被各种晦涩的术语和抽象的概念弄得晕头转向,这本书却能以一种非常易于理解的方式,将这些难点一一剖析。例如,书中对对象、类、方法等核心概念的解释,不仅仅停留在文字的描述上,而是通过大量的类比和实际的编程场景,让读者能够真正“看见”这些概念是如何运作的。那些初学者常常感到困惑的指针、内存管理等内容,作者更是花费了大量的篇幅,配合清晰的图示和代码示例,将它们变得触手可及。我记得第一次接触Objective-C时,对于内存的分配和释放感到非常恐惧,生怕一不小心就会导致内存泄漏。但通过这本书的引导,我不仅理解了ARC(自动引用计数)的工作原理,更对如何手动管理内存有了更深层次的认识,这让我对编写稳定可靠的iOS应用充满了信心。总而言之,这本书的优点在于它能够真正从读者的角度出发,用最清晰、最易懂的方式,将Objective-C的基础知识根植于读者的心中,为后续更深入的学习打下了坚实的基础。
这本书的质量,在同类Objective-C教材中绝对是数一数二的。我特别看重的是其内容的实用性和前沿性。作者并非只是简单地罗列语法和概念,而是将这些知识点紧密地结合到实际的应用场景中。书中提供的代码示例,都来源于真实的开发需求,这使得学习过程充满了动力和目标感。我常常会跟着书中的示例,在Xcode中动手实践,亲眼见证代码的运行效果,这种“边学边做”的学习方式,效率极高。而且,我惊喜地发现,书中涉及的许多内容,即使是在Objective-C相对成熟的今天,依然具有很强的指导意义。例如,关于Objective-C运行时特性的讲解,以及如何利用它们实现更高级的功能,这一点让我对Objective-C的灵活性和强大之处有了更深的认识。书中的某些章节,甚至触及了一些更深层次的优化技巧,比如如何编写更高效的方法调用,以及如何理解Objective-C对象在内存中的实际布局,这些内容对于想要深入理解Objective-C底层机制的读者来说,无疑是宝贵的财富。总之,这本书的深度和广度,足以满足从入门到进阶的各种需求。
坦白说,在我开始阅读这本书之前,我对Objective-C的印象还停留在“一门古老且复杂的语言”的阶段。然而,这本书的出现,彻底颠覆了我的认知。它以一种极其连贯且逻辑严谨的结构,逐步引导读者深入了解Objective-C的方方面面。我尤其喜欢书中对于“消息传递”机制的深入探讨,这与我之前接触过的命令式编程模型有着显著的区别。作者通过生动的例子,解释了对象之间如何通过发送和接收消息进行通信,以及这种机制在Objective-C中的重要性。这一点对于理解Cocoa Touch框架的运作至关重要。此外,书中还穿插了许多实用的技巧和最佳实践,这些并非是枯燥的理论,而是可以直接应用于实际开发中的宝贵经验。例如,在代码风格、命名规范以及错误处理等方面,作者都给出了非常专业的建议,这对于养成良好的编程习惯非常有帮助。我发现,跟随书中的指导,我不仅掌握了Objective-C的语法,更重要的是,我开始理解了Objective-C的“哲学”,它如何优雅地处理对象间的交互,以及如何在保持代码简洁的同时实现强大的功能。这本书确实是一本能够让你从“知道”Objective-C到“理解”Objective-C的桥梁。
虽然有一些笔误,可是总体来说还是非常好的。能从编译器实现角度介绍,从基本语法到Cocoa,从Cocoa慢慢引导到AppKit和UIKit,从MRC慢慢引导到ARC,基本上所有特性都覆盖到了。从内存管理那一章开始,给出代码的同时总会提醒先考虑一下内存管理,这有助于养成经常思考内存管理的好习惯。
还不错
幼儿园级别的编程书——极·入门级
还不错
书比较老了,讲的内容很多都在XCode5里用不到了。有个别错误,不过对于初学者,尤其是我这样从来没接触过ObjC的来说,还是可以读一读的。