![]() 作者:[日]荻原刚志 出版社: 人民邮电出版社 译者:唐 璐/翟俊杰 出版年: 2014-12 页数: 460 定价: 79.00元 装帧: 平装 ISBN: 9787115377197 内容简介 · · · · · ·本书结合理论知识和实例程序,全面而系统地介绍了Objective-C 编程的相关内容,包括类和继承、对象的类型和动态绑定、基于引用计数的内存管理、垃圾回收、属性声明、类NSObject 和运行时系统、Foundation 框架中常用的类、范畴、抽象类与类簇、对象的复制及存储、块对象、消息发送模式、图像视图、异常和错误、并行编程、键值编码等。 本书适合iOS 应用和Mac OS X 开发初学者系统入门、有经验的开发者深入理解语言本质,也适合开发团队负责人、项目负责人作为综合性的Objective-C 参考书阅读。 作者简介 · · · · · ·作者简介: 荻原刚志 大阪大学工学博士毕业。京都产业大学计算机理工学院教授,大阪大学客座教授。主要从事软件开发手法、隐写术等方面的研究。其本人也是应用软件开发者,代表作品有ToyViewer、Typist等。 译者简介: 唐璐 硕士毕业于东北大学,2005年赴日,曾就职于东京PtoPA、东软日本,在日期间曾参与多个iOS和人工智能的项目。现就职于阿里巴巴无线事业部,从事NLP方面的研究和开发工作。 翟俊杰 毕业于吉林大学和北京邮电大学 研究方向为模式识别和智能系统。先后任职于东京PtoPA、北京腾讯科技和北京搜狗科技有限公司,主要从事NLP、数据质量、数据挖掘方面的研究和开发。 目录 · · · · · ·第1章 面向对象的编程 11.1 对象的概念 2 1.1.1 面向功能的软件设计的局限性 2 1.1.2 面向对象的模块化 2 1.1.3 消息传递 3 1.1.4 模块的抽象化 4 · · · · · ·() 第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和Objective-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 Xcode中的动作方法和Outlet的写法 155 8.3 Objective-C和Cocoa环境 156 8.3.1 cocoa环境和Mac OS X 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 Graphics的浮点数类型 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 NSString 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函数和MyViewerCtrl类 333 17.3.2 类WinCtr 336 17.3.3 类MyInspector 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 异常传播和 @finally 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.6.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 @synchronized 379 19.3 操作对象和并行处理 380 19.3.1 新的并行处理程序 380 19.3.2 使用NSOperation的处理概述 381 19.3.3 NSOperation和NSOperationQueue的简单用法 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 类BrowsingWinCtrl 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 · · · · · · () "Objective-C编程全解(第3版)"试读 · · · · · ·Objective-C近年来一直备受关注,它诞生于1983年,设计之初和C++一样都是为给C语言加入面向对象的功能。在iPhone发布之前,Objective-C一直都是一门默默无闻的小众语言,而C++则长期占据编程语言排行榜的前几名。随着iPhone销量的爆发性增长,Objective-C语言的份额也迅速增长。在TIOBE编程语言排行榜上,Objective-C只用了短短的3年时间就从2009年8月的第二十名增长到了2012年7月的第三.. |
大大点赞!
上周培训老师推荐的
值得一看
引发思考