《Objective-C编程全解 第3版》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:(日)荻原刚志著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2015
  • ISBN:9787115377197
  • 页数:437 页
图书介绍:本书结合理论知识和实例程序,全面而系统地介绍了Objective-C编程的相关内容,包括类和继承、对象的类型和动态绑定、基于引用计数的内存管理、垃圾回收、属性声明、类NSObject和运行时系统、Foundation框架中常用的类、范畴、抽象类与类簇、对象的复制及存储、块对象、消息发送模式、图像视图、异常和错误、并行编程、键值编码等。

第1章 面向对象的编程 1

1.1 对象的概念 2

1.1.1 面向功能的软件设计的局限性 2

1.1.2 面向对象的模块化 2

1.1.3 消息传递 3

1.1.4 模块的抽象化 4

1.1.5 对象的属性 5

专栏 面向对象的方方面面 5

1.1.6 类 6

专栏 Cocoa和Obiective-C的历史 8

1.2 模块和对象 8

1.2.1 软件模块 8

1.2.2 高独立性的模块 9

1.2.3 模块的信息隐蔽 9

1.2.4 类的定义和接口 10

1.2.5 消息发送的实现 10

专栏 C语言的新标准 11

第2章 Objective-C程序设计 13

2.1 对象和消息 14

2.1.1 消息表达式 14

2.1.2 消息选择器 15

2.1.3 实例变量的生成和初始化 16

2.2 类的定义 17

2.2.1 类的接口声明 17

专栏 各种各样的布尔类型 18

专栏 不指定方法的返回值 18

2.2.2 类的实现 19

2.2.3 一个遥控器的例子 19

2.3 编译 21

2.3.1 简单的编译方法 21

2.3.2 多文件编译 23

2.4 程序的书写风格 24

2.4.1 混合编程 24

2.4.2 C语言函数的使用方法 25

2.4.3 静态变量的定义 26

2.4.4 头文件的引入 26

专栏 参考文档和SDK 27

专栏 Xcode的安装 28

第3章 类和继承 29

3.1 继承的概念 30

3.1.1 父类和子类 30

3.1.2 类的层次结构 31

3.2 利用继承定义新类 32

3.2.1 继承的定义 32

3.2.2 类定义和头文件 33

3.2.3 继承和方法调用 34

3.2.4 调用父类的方法 34

3.2.5 初始化方法的定义 35

3.3 使用继承的程序示例 36

3.3.1 追加新方法的例子 36

3.3.2 方法重写的例子 37

3.4 继承和方法调用 38

3.4.1 使用self调用方法 38

3.4.2 使用super调用方法 39

3.4.3 测试程序 40

3.5 方法定义时的注意事项 41

3.5.1 局部方法 41

3.5.2 指定初始化方法 42

专栏 Objective-C与开源软件 44

第4章 对象的类型和动态绑定 45

4.1 动态绑定 46

4.1.1 什么是动态绑定 46

4.1.2 多态 47

4.2 作为类型的类 48

4.2.1 把类作为一种类型 48

4.2.2 空指针nil 49

专栏 关系表达式 50

4.2.3 静态类型检查 51

4.2.4 静态类型检查的总结 53

4.3 编程中的类型定义 54

4.3.1 签名不一致时的情况 54

专栏 重载 55

4.3.2 类的前置声明 56

4.3.3 强制类型转换的使用示例 57

4.4 实例变量的数据封装 58

4.4.1 实例变量的访问权限 58

4.4.2 访问器 60

4.4.3 实例变量的可见性 61

4.4.4 在实现部分中定义实例变量 62

4.5 类对象 63

4.5.1 什么是类对象 63

4.5.2 类对象的类型 64

4.5.3 类方法的定义 65

4.5.4 类变量 65

4.5.5 类对象的初始化 66

4.5.6 初始化方法的返回值 68

第5章 基于引用计数的内存管理 69

5.1 动态内存管理 70

5.1.1 内存管理的必要性 70

5.1.2 引用计数、自动引用计数和自动垃圾回收 70

5.2 手动引用计数内存管理 71

5.2.1 引用计数 71

5.2.2 测试引用计数的例子 73

5.2.3 释放对象的方法 74

5.2.4 访问方法和对象所有权 75

专栏 静态对象 75

5.2.5 自动释放 76

5.2.6 使用自动释放池时需要注意的地方 77

5.2.7 临时对象的生成 77

5.2.8 运行回路和自动释放池 78

5.2.9 常量对象 78

专栏 常量修饰符const 79

5.3 分数计算器的例子 80

5.3.1 分数类Faction 80

5.3.2 保存计算结果的FracRegister类 83

5.3.3 主函数和执行示例 85

5.4 ARC概要 88

5.4.1 什么是ARC 88

5.4.2 禁止调用引用计数的相关函数 89

5.4.3 管理自动释放池的新语法 90

5.4.4 变量的初始值 90

5.4.5 方法族 90

5.4.6 方法dealloc的定义 92

5.4.7 使用ARC的程序的编译 93

5.4.8 ARC的基本注意事项 94

5.4.9 使用ARC重构分数计算器 94

5.5 循环引用和弱引用 95

5.5.1 循环引用 95

5.5.2 所有权和对象间的关系 96

5.5.3 弱引用 97

5.5.4 自动nil化的弱引用 98

5.5.5 对象之间引用关系的基本原则 99

5.6 ARC编程时其他一些注意事项 100

5.6.1 可以像通常的指针一样使用的对象 100

5.6.2 setter方法的注意事项 101

5.6.3 通过函数的参数返回结果对象 102

5.6.4 C语言数组保存Objective-C对象 103

5.6.5 ARC对结构体的一些限制 105

5.6.6 提示编译器进行特别处理 106

第6章 垃圾回收 107

6.1 垃圾回收的概要 108

6.1.1 查找不再使用的对象 108

6.1.2 编程时的注意事项 109

6.1.3 立圾收集器 110

6.1.4 finalize方法的定义 111

6.1.5 编译时的设定 112

6.1.6 引用计数管理方式中方法的处理 113

6.1.7 使用垃圾回收编程小结 114

6.2 垃圾回收的详细功能 114

6.2.1 分代垃圾回收 114

6.2.2 弱引用 115

6.2.3 自动nil化 115

6.2.4 通过垃圾回收回收动态分配的内存 116

6.2.5 __strong修饰符的使用方法 117

6.2.6 NSGarbageCollector类 117

6.2.7 实时API 118

6.3 内存管理方式的比较 119

6.3.1 引用计数和垃圾回收 119

6.3.2 更改内存管理方式 120

6.3.3 各种内存管理方式的比较 120

第7章 属性声明 123

7.1 属性是什么 124

7.1.1 使用属性编程 124

7.1.2 属性的概念 125

专栏 内省 125

7.2 属性的声明和功能 126

7.2.1 显式声明属性 126

7.2.2 属性的实现 127

7.2.3 @synthesize和实例变量 129

7.2.4 通过@synthesize生成实例变量 130

7.2.5 给属性指定选项 131

7.2.6 赋值时的选项 132

7.2.7 原子性 134

7.2.8 属性声明和继承 135

7.2.9 方法族和属性的关系 135

7.3 通过点操作符访问属性 136

7.3.1 点操作符的使用方法 136

7.3.2 复杂的点操作符的使用方法 137

7.3.3 何时使用点操作符 139

第8章 类NSObject和运行时系统 141

8.1 类NSObject 142

8.1.1 根类的作用 142

8.1.2 类和实例 142

8.1.3 实例对象的生成和释放 143

8.1.4 初始化 144

8.1.5 对象的比较 144

8.1.6 对象的内容描述 145

8.2 消息发送机制 145

8.2.1 选择器和SEL类型 145

8.2.2 消息搜索 146

8.2.3 以函数的形式来调用方法 147

专栏 函数指针 148

8.2.4 对self进行赋值 149

8.2.5 发送消息的速度 149

8.2.6 类对象和根类 152

8.2.7 Target-action paradigm 153

8.2.8 Xcoder中的动作方法和Outlet的写法 155

8.3 Objective-C和Cocoa环境 156

8.3.1 cocoa环境和Mac OSX 156

8.3.2 Cocoa Touch和iOS 156

8.3.3 框架 157

8.3.4 框架的构成和头文件 157

8.4 全新的运行时系统 159

8.4.1 对64位的对应和现代运行时系统 159

8.4.2 数据模型 159

8.4.3 64位模型和整数类型 159

8.4.4 Core Graprhics的浮点数类型 160

8.4.5 健壮实例变量 161

专栏 条件编译 162

第9章 Foundation框架中常用的类 163

9.1 对象的可变性 164

9.1.1 可变对象和不可变对象 164

9.1.2 可变对象的生成 165

9.2 字符串类NSString 166

9.2.1 常量字符串 166

9.2.2 NSStnng 167

9.2.3 NSMutableString 174

9.3 NSData 176

9.3.1 NSData 176

9.3.2 NSMutableData 178

9.4 数组类 179

9.4.1 NSArray 179

9.4.2 NSMutableArray 183

9.4.3 数组对象的所有权 184

9.4.4 快速枚举 185

9.4.5 枚举器NSEnumerator 186

9.4.6 快速枚举和枚举器 187

9.4.7 集合类 188

9.5 词典类 189

9.5.1 NSDictionary 191

9.5.2 NSMutableDicitionary 193

9.6 包裹类 194

9.6.1 NSNumber 194

9.6.2 NSValue 196

9.6.3 类型编码和@encode() 196

9.6.4 NSNull 197

9.7 NSURL 198

9.7.1 关于URL 198

9.7.2 NSURL的概要 199

9.7.3 使用NSURL来访问资源 201

第10章 范畴 203

10.1 范畴 204

10.1.1 范畴 204

10.1.2 范畴和文件的组织 205

10.1.3 作为子模块的范畴 206

10.1.4 方法的前向声明 207

10.1.5 私有方法 208

10.1.6 类扩展 209

10.1.7 范畴和属性声明 210

10.2 给现有类追加范畴 211

10.2.1 追加新的方法 211

10.2.2 追加方法的例子 212

专栏 可变参数的方法的定义 213

10.2.3 覆盖已有的方法 214

10.3 关联引用 215

10.3.1 关联引用的概念 215

10.3.2 添加和检索关联 215

10.3.3 对象的存储方法 216

10.3.4 断开关联 217

10.3.5 利用范畴的例子 217

第11章 抽象类和类簇 221

11.1 抽象类 222

11.1.1 什么是抽象类 222

11.1.2 抽象类的例子 223

11.2 类簇 228

11.2.1 类簇的概念 228

11.2.2 测试程序 229

11.2.3 编程中的注意事项 230

11.3 生成类簇的子类 231

11.3.1 使用范畴 231

11.3.2 基本方法的重定义 231

11.3.3 生成字符串的子类 233

第12章 协议 235

12.1 协议的概念 236

12.1.1 什么是协议 236

12.1.2 对象的协议 236

12.2 Objective-C中协议的声明 238

12.2.1 协议的声明 238

12.2.2 协议的采用 239

12.2.3 协议的继承 240

12.2.4 指定协议的类型声明 240

12.2.5 协议的前置声明 241

12.2.6 协议适用性检查 241

12.2.7 必选功能和可选功能 242

12.2.8 使用协议的程序示例 242

专栏 类的多重继承 245

12.3 非正式协议 246

12.3.1 什么是非正式协议 246

12.3.2 非正式协议的用途 246

专栏 使用宏(macro)来区分系统版本的差异 247

第13章 对象的复制及存储 249

13.1 对象的复制 250

13.1.1 浅复制和深复制 250

13.1.2 区域 251

13.1.3 复制方法的定义 251

13.1.4 复制方法的例子 252

13.1.5 实现可变复制 254

13.2 归档 255

13.2.1 对象的归档 255

13.2.2 Foundation框架的归档功能 255

13.2.3 归档方法的定义 256

13.2.4 归档的方法定义 257

13.2.5 归档和解档的初始化方法 258

13.3 属性表 259

13.3.1 属性表概况 259

13.3.2 ASCII码格式属性表 260

13.3.3 XML格式属性表 261

13.3.4 属性表的变换和检查 261

第14章 块对象 263

14.1 什么是块对象 264

14.1.1 C编译器和GCD 264

14.1.2 块对象的定义 264

14.1.3 块对象和类型声明 266

14.1.4 块对象中的变量行为 267

14.1.5 排序函数和块对象 269

14.2 块对象的构成 271

14.2.1 块对象的实例和生命周期 271

14.2.2 应该避免的编码模式 273

14.2.3 块对象的复制 273

14.2.4 指定特殊变量__block 274

14.3 Objective-C和块对象 276

14.3.1 方法定义和块对象 276

14.3.2 作为Objective-C对象的块对象 276

14.3.3 ARC和块对象 277

14.3.4 对象内变量的行为 277

14.3.5 集合类中添加的方法 279

14.3.6 在窗体中使用块对象 280

14.3.7 ARC中使用块对象时的注意事项 281

第15章 消息发送模式 283

15.1 应用和运行回路 284

15.1.1 运行回路 284

15.1.2 定时器对象 285

15.1.3 消息的延迟执行 286

15.2 委托 286

15.2.1 委托的概念 286

15.2.2 Cocoa环境中的委托 287

15.2.3 委托的设置和协议 288

15.2.4 使用委托的程序 289

15.3 通知 289

15.3.1 通知和通知中心的概念 289

15.3.2 通知对象 290

15.3.3 通知中心 291

15.3.4 通知队列 293

专栏 通知名或异常名的定义 294

15.4 反应链 294

15.4.1 反应链概述 294

15.4.2 应用中的反应链 295

15.5 消息转送 296

15.5.1 消息转送的构成 296

15.5.2 消息转送需要的信息 296

15.5.3 消息转送的定义 297

15.5.4 禁止使用消息 298

15.5.5 程序示例 298

15.6 撤销构造 300

15.6.1 撤销构造的概念 300

15.6.2 在撤销管理器中记录操作 301

第16章 应用的构造 303

16.1 应用束 304

16.1.1 应用束的构造 304

16.1.2 nib文件和各语言资源 305

专栏 指定语言和地区 305

16.1.3 信息文件的主要内容 306

16.1.4 通过NSBundle访问资源 308

16.1.5 iOS中资源的访问 310

16.1.6 通用二进制 311

16.2 加载nib文件 312

16.2.1 nib文件实例化 312

16.2.2 在Mac OS X中加载nib文件 313

16.2.3 在iOS中加载nib文件 313

16.2.4 nib文件内的包含循环 314

16.2.5 nib文件内对象的初始化 314

16.2.6 启动应用 314

16.3 iOS的文件保存场所 316

16.3.1 主要目录及功能 316

16.3.2 获取目录路径 317

16.4 用户默认 317

16.4.1 保存设定值 317

16.4.2 默认域 318

16.4.3 查找用户默认的工具 319

16.4.4 NSUserDefaults概要 319

16.5 应用的本地化 321

16.5.1 消息的本地化 321

16.5.2 本地化指针 322

专栏 本地化应用名 323

16.5.3 本地化 323

专栏 消息内的语序 324

16.6 模块的动态加载 324

16.6.1 可加载束 325

16.6.2 使用可加载束的程序 325

16.6.3 插件概述 326

专栏 沙盒(App Sandbox) 327

第17章 实例:简单图像视图 329

17.1 Application框架和Interface Builder 330

17.2 程序概况 330

17.2.1 对象间的关系 330

17.2.2 通知 331

17.2.3 撤销和重做 332

17.2.4 可加载束和本地化 332

17.2.5 用户默认 332

17.3 编程介绍 333

17.3.1 main函数和MyViewe rCtrl类 333

17.3.2 类WinCtr 336

17.3.3 类Mylnspector 341

17.4 应用束的组织 345

17.4.1 创建编译和设置文件 345

17.4.2 程序运行例子 346

17.4.3 GUI定义文件和程序 347

专栏 Objective-C调试器的功能 349

第18章 异常和错误 351

18.1 异常 352

18.1.1 异常处理的概念 352

18.1.2 Objective-C中的异常处理 352

18.2 异常处理机制概述 353

18.2.1 异常句柄和异常处理域 353

18.2.2 异常表示类NSException 353

18.2.3 异常处理机制的语法 354

18.2.4 简单的异常处理的示例程序 355

专栏 日志输出函数NSLog() 356

18.3 异常的发生和传播 357

18.3.1 异常的传播 357

18.3.2 自己触发异常 357

18.3.3 用@throw语法产生异常 357

18.3.4 @catch的特殊语法 358

18.3.5 异常传播和@finallv 358

18.3.6 异常处理程序的注意点 359

18.4 断言 360

18.4.1 断言是什么 360

18.4.2 断言宏 361

专栏 包含可变个数的参数的宏 361

18.5 错误处理 362

18.5.1 错误处理结构的目的 362

18.5.2 表示错误的类NSError的使用方法 362

18.5.3 获取错误对象的信息 364

18.5.4 生成自定义错误对象 364

18.6 错误反应链 366

18.6.1 错误反应链的结构 366

18.2.2 错误对象的更改和恢复 367

专栏 单元测试 369

第19章 并行编程 371

19.1 多线程 372

19.1.1 线程的基本概念 372

19.1.2 线程安全 372

19.1.3 注意点 373

19.1.4 使用NSThread创建线程 373

19.1.5 当前线程 374

19.1.6 GUI应用和线程 374

19.2 互斥 375

19.2.1 需要互斥的例子 375

19.2.2 锁 376

19.2.3 死锁 377

19.2.4 尝试获得锁 378

19.2.5 条件锁 378

19.2.6 NSRecursiveLock 379

19.2.7 @svnchronized 379

19.3 操作对象和并行处理 380

19.3.1 新的并行处理程序 380

19.3.2 使用NSOperation的处理概述 381

19.3.3 NSOperation和NSOperationOueue的简单用法 382

19.3.4 等待至聚合任务终止 383

19.3.5 使用操作对象的简单例子 383

19.3.6 NSInvocationOperation的使用方法 385

19.3.7 NSBlockOperation的使用方法 385

19.3.8 NSBlockOperation中添加多个块对象 386

19.3.9 设置任务间的依赖 386

19.3.10 任务的优先级设置 388

19.3.11 设定最大并行任务数 388

19.3.12 终止任务 389

19.3.13 设置队列调度为中断状态 389

19.4 并行处理的示例程序 390

19.4.1 程序概要 390

19.4.2 类BrowsingViewerCtrl 390

19.4.3 类BrowsingWinCt rl 392

19.4.4 类DrawOperation 394

19.4.5 其他改变 396

19.5 使用连接的通信 397

19.5.1 连接 398

19.5.2 代理 398

19.5.3 方法的指针参数 399

19.5.4 对象的副本传递 400

19.5.5 异步通信 401

19.5.6 设置协议 401

19.5.7 运行回路的开始 402

19.5.8 收发消息时的处理 402

19.5.9 线程间连接 404

19.5.10 进程间连接 406

19.5.11 进程间连接的例子 407

第20章 键值编码 411

20.1 键值编码概况 412

20.1.1 什么是键值编码 412

20.1.2 键值编码的基本处理 412

20.2 访问属性 414

20.2.1 键值编码的方法的行为 414

20.2.2 属性值的自动转换 415

20.2.3 字典对象和键值编码 416

20.2.4 根据键路径进行访问 416

20.2.5 一对一关系和一对多关系 417

20.2.6 数组对象和键值编码 419

20.3 一对多关系的访问 420

20.3.1 带索引的访问器模式 420

20.3.2 一对多关系的可变访问 421

20.4 KVC标准 422

20.4.1 验证属性值 422

20.4.2 键值编码的准则 423

20.5 键值观察 424

20.5.1 键值观察的基础 424

20.5.2 示例程序 426

20.5.3 一对多关系的属性监视 429

20.5.4 依赖键的登记 429

20.6 Cocoa绑定概述 430

20.6.1 目标-行为-模式的弱点 430

20.6.2 什么是Cocoa绑定 430

20.6.3 Cocoa绑定所需的方法 431

20.6.4 例题:绘制二次函数图的软件 432

20.6.5 自定义视图的方法定义 434