新書推薦:
《
第二人生:找到重新定义人生的智慧
》
售價:NT$
440.0
《
唐朝三百年
》
售價:NT$
490.0
《
反操纵心理学:夺回人生主导权 拒绝被操纵
》
售價:NT$
249.0
《
同工异曲:跨文化阅读的启示(修订版)(师承钱锺书先生,比较文学入门,体量小但内容丰,案例文笔皆精彩)
》
售價:NT$
199.0
《
牛津立法研究手册
》
售價:NT$
1630.0
《
制度为什么重要:政治科学中的新制度主义(人文社科悦读坊)
》
售價:NT$
290.0
《
梦醒子:一位华北乡居者的人生(1857—1942))(第2版)
》
售價:NT$
340.0
《
啊哈!原来如此(中译本修订版)
》
售價:NT$
290.0
|
編輯推薦: |
内容最详尽的iOS 7平台iPhoneiPad应用开发指引
获奖无数的疯狂讲义系列最新作品
密集的代码注释,帮你读懂代码、领悟真谛
内有“疯狂连连看”等案例的完整实现
|
內容簡介: |
本书以最新的 iOS 7.0、Xcode 5 为平台,全面介绍 iOS 应用开发的基础知识。全书从 Objective-C
基本语法开始,详细介绍了 Objective-C 的基本语法结构、Objective-C 的面向对象特征、Foundation
框架的核心类库用法、文件 IO 体系等知识,掌握 Objective-C 语言是 iOS 引用开发的基础。之后,本书将带领读者掌握
iOS 应用开发的基本理论以及 iOS 应用的 MVC 设计和事件处理编程,重点介绍 iOS 界面编程、iOS
应用的生命周期、Quartz 2D 绘图、坐标变换、Core Image 滤镜、Core Animation
动画等内容。最后介绍了一个《疯狂连连看》游戏实例。
本书并不局限于介绍 iOS
编程的各种理论知识,而是从“项目驱动”的角度来讲授理论,全书一共包括近百个实例,这些示范性的实例既可帮读者更好地理解各知识点在实际开发中的应用,也可供读者在实际开发时作为参考,拿来就用。
本书为所有打算深入掌握 iOS 编程的读者而编写,适合各层次的 iOS 学习者和开发者阅读,也适合作为大学教育、培训机构的 iOS
教材。但如果只是想简单涉猎 iOS 应用开发,则本书过于庞大,不适合阅读。
|
關於作者: |
李刚,从事10多年的软件行业从业经历,现任疯狂软件教育中心教学总监。
51cto专家门诊特邀嘉宾。
曾任广州电信、广东龙泉科技等公司的技术培训导师,广东技术师范学院计算机科学系的兼职副教授。
培训的学生已在华为、IBM、阿里软件、网易、电信盈科等名企就职。
国内著名高端IT技术作家,已出版疯狂体系图书均已得到广泛的市场认同,多次重印成为超级畅销书,并被多所“985”“211”院校选作教材。部分图书已被翻译成繁体中文版、授权到台湾地区。
|
目錄:
|
第1章 Ajax概述与Ajax初体验1
1.1 重新思考Web应用2
1.1.1 应用系统的发展史2
1.1.2 传统Web应用的优势和缺点5
1.2 重新设计Web应用5
1.2.1 富Internet应用6
1.2.2 使用Ajax7
1.3 Ajax技术介绍7
1.3.1 Ajax的工作方式8
1.3.2 Ajax技术核心:XMLHttpRequest8
1.3.3 Ajax的编程脚本:JavaScript语言8
1.3.4 HTML页面的DOM模型9
1.3.5 动态加载和显示数据9
1.3.6 Ajax的特征10
1.3.7 Ajax带来的典型优势11
1.4 开发传统的BS聊天室13
1.4.1 实现业务逻辑组件14
1.4.2 实现控制器16
1.4.3 实现视图18
1.4.4 传统BS聊天室的问题19
1.5 Ajax聊天室20
1.5.1 异步发送请求20
1.5.2 解决多余刷新的问题22
1.5.3 解析服务器响应24
1.5.4 何时发送请求25
1.5.5 Ajax聊天室的特点29
1.6 Ajax编程的技术难点29
1.7 传统Web应用与Ajax应用的对比31
1.8 本章小结32
第2章 数据类型和运算符21
2.1 注释22
2.2 标识符和变量23
2.2.1 分隔符23
2.2.2 标识符规则25
2.2.3 Objective-C关键字25
2.3 数据类型分类25
2.4 基本数据类型26
2.4.1 整型26
2.4.2 NSLog输出函数及格式字符27
2.4.3 字符型29
3.4.4 浮点型30
2.4.5 枚举型31
2.4.6 BOOL类型32
2.5 类型转换34
2.5.1 自动类型转换34
2.5.2 强制类型转化36
2.5.3 表达式类型的自动提升36
2.6 运算符37
2.6.1 算术运算符37
2.6.2 赋值运算符39
2.6.3 位运算符40
2.6.4 扩展后的赋值运算符42
2.6.5 比较运算符42
2.6.6 逻辑运算符43
2.6.7 逗号运算符43
2.6.8 三目运算符44
2.6.9 运算符的结合性和优先级45
2.7 小结46
第3章 流程控制与数组47
3.1 顺序结构48
3.2 分支结构48
3.2.1 if条件语句48
3.2.2 switch分支语句52
3.3 循环结构54
3.3.1 while循环语句54
3.3.2 do while循环语句56
3.3.3 for循环56
3.3.4 嵌套循环59
3.4 控制循环结构60
3.4.1 使用break结束循环61
3.4.2 使用continue结束本次循环61
3.4.3 使用return结束函数62
3.5 goto语句62
3.6 数组64
3.6.1 定义数组64
3.6.2 数组的初始化65
3.6.3 使用数组66
3.6.4 多维数组67
3.6.5 多维数组的初始化68
3.6.6 字符数组、字符串与结束标志73
3.6.7 输出字符串和字符串函数74
3.6.8 数组的应用举例76
3.7 小结78
第4章 C语言特性79
4.1 函数80
4.1.1 定义函数80
4.1.2 函数声明83
4.1.3 函数的参数传递机制84
4.1.4 递归函数88
4.1.5 数组作为函数参数89
4.1.6 内部函数与外部函数93
4.2 局部变量与全局变量94
4.2.1 局部变量95
4.2.2 全局变量96
4.2.3 外部全局变量与内部全局变量97
4.2.4 动态存储与静态存储99
4.3 预处理101
4.3.1 使用#define、#undef执行宏定义101
4.3.2 带参数的宏定义103
4.3.3 使用#ifdef、#ifndef、#else、#endif执行条件编译104
4.3.4 使用#if、#elif、#else、#endif执行条件编译106
4.3.5 #include与#import107
4.4 指针108
4.4.1 指针的概念108
4.4.2 指针变量及其基本用法109
4.4.3 指针变量作为函数参数111
4.5 指针与数组113
4.5.1 指向数组的指针变量113
4.5.2 指针运算114
4.5.3 数组变量作为函数参数116
4.5.4 指向多维数组的指针变量118
4.6 字符串与指针121
4.6.1 使用字符指针表示字符串121
4.6.2 字符指针作为函数参数122
4.7 函数与指针123
4.7.1 用函数指针变量调用函数123
4.7.2 用函数指针变量作为函数参数124
4.7.3 返回指针的函数126
4.8 指针数组和指向指针的指针127
4.8.1 指针数组与main函数形参127
4.8.2 指向指针变量的指针130
4.9 结构体130
4.9.1 定义结构体131
4.9.2 typedef语句133
4.9.3 初始化结构体变量134
4.9.4 结构体数组135
4.10 块136
4.10.1 块的基本语法136
4.10.2 块与局部变量137
4.10.3 直接使用块作为参数139
4.10.4 使用typedef定义块变量类型139
4.11 小结140
第5章 面向对象(上)141
5.1 类和对象142
5.1.1 定义类142
5.1.2 对象的产生和使用146
5.1.3 对象和指针148
5.1.4 self关键字150
5.1.5 id类型153
5.2 方法详解154
5.2.1 方法的所属性154
5.2.2 形参个数可变的方法155
5.3 成员变量156
5.3.1 成员变量及其运行机制156
5.3.2 模拟类变量158
5.3.3 单例(Singleton)模式159
5.4 隐藏和封装160
5.4.1 理解封装161
5.4.2 使用访问控制符161
5.4.3 理解@package访问控制符165
5.4.4 合成存取方法166
5.4.5 使用点语法访问属性171
5.5 键值编码(KVC)与键值监听(KVO)172
5.5.1 简单的KVC172
5.5.2 处理不存在的key175
5.5.3 处理nil值176
5.5.4 Key路径178
5.5.5 键值监听(KVO)179
5.6 对象初始化182
5.6.1 为对象分配空间182
5.6.2 初始化方法与对象初始化183
5.6.3 便利的初始化方法184
5.7 类的继承187
5.7.1 继承的特点187
5.7.2 重写父类的方法189
5.7.3 super关键字190
5.8 多态193
5.8.1 多态性193
5.8.2 指针变量的强制类型转换196
5.8.3 判断指针变量的实际类型197
5.9 小结198
第6章 面向对象(下)199
6.1 Objective-C的包装类200
6.1.1 它们不是包装类200
6.1.2 NSValue和NSNumber201
6.2 处理对象202
6.2.1 打印对象和description方法202
6.2.2 ==和isEqual方法205
6.3 类别与扩展209
6.3.1 类别(category)210
6.3.2 利用类别对类进行模块化设计212
6.3.3 使用类别来调用私有方法212
6.3.4 扩展(extension)214
6.4 协议(protocol)与委托216
6.4.1 规范、协议与接口216
6.4.2 使用类别实现非正式协议217
6.4.3 正式协议的定义218
6.4.4 遵守(实现)协议219
6.4.5 协议与委托(delegate)222
6.5 使用@try处理异常225
6.5.1 使用@try...@catch...@finally捕捉异常226
6.5.2 访问异常信息228
6.5.3 使用@finally回收资源229
6.5.4 抛出异常与自定义异常类230
6.6 Objective-C反射机制232
6.6.1 获得Class232
6.6.2 检查继承关系233
6.6.3 动态调用方法235
6.7 手动内存管理237
6.7.1 对象的引用计数239
6.7.2 对象所属权241
6.7.3 方法中的保留和释放243
6.7.4 使用自动释放池245
6.7.5 自动释放池的销毁时机与工作过程246
6.7.6 临时对象与事件循环中的自动释放池248
6.7.7 手动内存管理的规则总结249
6.8 自动引用计数250
6.8.1 自动引用计数概述250
6.8.2 @autoreleasepool块251
6.9 小结251
第7章 Foundation框架详解252
7.1 字符串(NSString与NSMutableString)253
7.1.1 创建字符串253
7.1.2 NSString的常用功能254
7.1.3 可变字符串(NSMutableString)255
7.2 日期与时间256
7.2.1 日期与时间(NSDate)256
7.2.2 日期格式器(NSDateFormatter)258
7.2.3 日历(NSCalendar)与日期组件(NSDateComponents)260
7.2.4 定时器(NSTimer)261
7.3 对象复制263
7.3.1 copy与mutableCopy方法263
7.3.2 NSCopying与NSMutableCopy协议264
7.3.3 浅复制与深复制266
7.3.4 setter方法的复制选项268
7.4 Objective-C集合概述269
7.5 数组(NSArray与NSMutableArray)270
7.5.1 NSArray的功能与用法270
7.5.2 对集合元素整体调用方法275
7.5.3 对NSArray进行排序276
7.5.4 使用枚举器遍历NSArray集合元素278
7.5.5 快速枚举(for…in)279
7.5.6 可变数组(NSMutableArray)279
7.5.7 NSArray的KVC与KVO281
7.6 集合(NSSet与NSMutableSet)282
7.6.1 NSSet的功能与用法282
7.6.2 NSSet判断集合元素重复的标准285
7.6.3 NSMutableSet的功能与用法288
7.6.4 NSCountedSet的功能与用法289
7.7 有序集合(NSOrderedSet与NSMutableOrderedSet)290
7.8 字典(NSDictionary与NSMutableDictionary)291
7.8.1 NSDictionary的功能与用法292
7.8.2 对NSDictionary的key排序295
7.8.3 对NSDictionaryKey进行过滤297
7.8.4 使用自定义类作为NSDictionary的key298
7.8.5 NSMutableDictionary的功能与用法299
7.9 谓词301
7.9.1 定义谓词301
7.9.2 使用谓词过滤集合302
7.9.3 在谓词中使用占位符参数303
7.9.4 谓词表达式语法305
7.9 小结307
第8章 文件IO308
8.1 使用NSData与NSMutableData309
8.2 使用NSFileManager管理文件和目录310
8.2.1 访问文件属性和内容311
8.2.2 创建、删除、移动、复制312
8.2.3 查看目录包含的内容313
8.3 使用NSPathUtilities.h管理路径314
8.4 使用ProcessInfo获取进程信息316
8.5 使用NSFileHandle处理文件IO317
8.6 使用NSURL读取网络资源319
8.7 使用NSBundle处理项目相关资源320
8.8 对象归档322
8.8.1 使用NSKeyedArchiver归档322
8.8.2 实现NSCoding协议323
8.8.3 使用NSData完成自定义归档326
8.8.4 使用归档实现深复制329
8.9 小结330
第9章 iOS应用开发入门331
9.1 从iOS项目开始332
9.1.1 iOS项目包含的文件332
9.1.2 Interface Builder简介333
9.1.3 向nib文件添加控件335
9.1.4 修改控件属性336
9.1.5 UIView支持的属性337
9.1.6 UILabel支持的属性339
9.2 MVC341
9.2.1 从程序入口开始341
9.2.2 应用程序委托342
9.2.4 理解iOS的MVC344
9.2.5 掌握UIViewController控制器345
9.3 事件机制347
9.3.1 程序获取控件的两种方式347
9.3.3 事件处理的方式352
9.4 代码控制UI界面357
9.4.1 使用纯代码开发UI界面357
9.4.2 使用代码创建UI界面359
9.4.3 自定义UI控件361
9.5 美化iOS应用364
9.5.1 定制iOS应用图标364
9.5.2 设置iOS应用的启动画面365
9.6 小结366
第10章 iOS应用的界面编程367
10.1 UI控件概述368
10.1.1 活动、静态和被动控件368
10.1.2 UIControl基类介绍369
10.2 按钮(UIButton)370
10.3 文本框(UITextField)374
10.3.1 完成输入后关闭键盘377
10.3.2 触碰背景关闭键盘378
10.4 多行文本控件(UITextView)379
10.4.1 UIScrollView支持的属性380
10.4.2 使用委托对象处理UITextView事件382
10.4.3 自定义选择内容后的菜单386
10.5 开关按钮(UISwitch)387
10.6 分段控件(UISegmentedControl)389
10.7 图像控件(UIImageView)392
10.8 进度条(UIProgressView)396
10.8.1 活动提示(UIActivity IndicatorView)399
10.9 拖动条(UISlider)401
10.10 警告框(UIAlertView)与UIActionSheet402
10.10.1 UIAlertView的基本用法403
10.10.2 带输入框的UIAlertView405
10.10.3 使用UIActionSheet409
10.11 日期选择器(UIDatePicker)411
10.12 选择器(UIPickerView)415
10.12.1 单列选择器416
10.12.2 多列选择器417
10.12.3 相互依赖的多列选择器419
10.12.4 自定义选择器视图421
10.13 微调器(UIStepper)425
10.14 网页控件(UIWebView)427
10.15 工具条(UIToolbar)431
10.16
表格(UITableView)与表格控制器(UITableViewController)434
10.16.1 简单表格436
10.16.2 处理单元格的选中440
10.16.3 定制表格行445
10.16.4 编辑表格451
10.16.5 多分区表格以及分区索引456
10.16.6 直接使用UITableView Controller458
10.16.7 使用iOS 6新增的UIRefresh Controller刷新表格461
10.17 搜索条(UISearchBar)463
10.17.1 使用搜索条464
10.17.2 使用UISearchDisplay Controller467
10.18
导航条(UINavigationBar)与导航条控制器(UINavigationController)470
10.18.1 使用导航条470
10.18.2 使用UINavigationController473
10.19
网格(UICollectionView)与网格控制器(UICollectionViewController)479
10.19.1 UICollectionView的功能与用法481
10.19.2 使用UICollectionViewDelegate
FlowLayout定制布局486
10.19.3 扩展UICollectionViewLayout定制布局487
10.19.4 多分区网格492
10.19.5 直接使用UICollection ViewController496
10.20 标签条(UITabBar)与标签页控制器(UITabBarController)499
10.20.1 使用UITabBar499
10.20.2 使用UITabBarController501
10.21
页控件(UIPageControl)与页控制器(UIPageViewController)504
10.21.1 UIPageControl与 UIScrollView结合使用504
10.21.2 使用UIPageViewController508
10.22 iPad应用开发512
10.22.1 使用iPad专用控件:UISplitView512
10.22.2 使用UIPopoverController实现浮动窗口519
10.22.3 开发同时兼容iPhone与iPad的应用521
10.23 小结525
第11章 管理iOS应用的运行526
11.1 自动旋转机制527
11.1.1 配置应用支持的方向527
11.1.2 指定视图控制器支持的方向529
11.2 旋转时重构用户界面530
11.3 旋转时切换视图532
11.4 iOS应用的生命周期535
11.4.1 应用程序的状态536
11.4.2 应用程序启动过程537
11.4.3 程序入口:main函数538
11.4.4 响应中断539
11.4.5 进入后台541
11.4.6 返回前台运行542
11.4.7 应用程序终止543
11.4.8 Main Run Loop543
11.5 使用Storyboard544
11.5.1 Storyboard的改进之处544
11.5.2 动态单元格546
11.5.3 静态单元格548
11.5.4 使用segue控制过渡550
11.5.5 使用segue控制导航553
11.6 小结556
第12章 图形、图像与动画557
12.1 使用UIImage和CGImage处理位图558
12.1.1 显示动画558
12.1.2 CGImage与CGImageRef560
12.2 Quartz 2D绘图561
12.2.1 Quartz 2D绘图基础:CGContextRef561
12.2.2 绘制几何图形564
12.2.3 点线模式566
12.2.4 绘制文本570
12.2.5 设置阴影573
12.2.6 使用路径574
12.2.7 绘制曲线579
12.2.8 在内存中绘图581
12.2.9 绘制位图588
12.3 图形变换593
12.3.1 使用坐标变换594
12.3.2 坐标变换与路径结合使用595
12.3.3 使用矩阵变换596
12.4 控制叠加模式599
12.5 处理填充605
12.5.1 渐变填充605
12.5.2 模式填充610
12.6 使用Core Image滤镜615
12.7 动画621
12.7.1 Core Animation动画基础622
12.7.2 使用CALayer622
12.7.3 使用CATransition控制过渡动画625
12.7.4 使用属性动画630
12.7.5 控制移动路径634
12.8 小结636
第13章 疯狂连连看637
13.1 连连看游戏简介638
13.2 开发游戏界面638
13.2.1 开发界面布局639
13.2.2 开发游戏界面控件639
13.2.3 处理方块之间的连接线644
13.3 《连连看》的状态数据模型646
13.3.1 定义数据模型646
13.3.2 初始化游戏状态数据646
13.4 加载界面的图片650
13.5 实现游戏视图控制器652
13.6 实现游戏逻辑654
13.6.1 定义FKGameService的接口代码654
13.6.2 实现FKGameService655
13.6.3 获取触碰点的方块656
13.6.4 判断两个方块是否可以相连657
13.6.5 定义获取通道的工具方法658
13.6.6 没有转折点的横向连接660
13.6.7 没有转折点的纵向连接660
13.6.8 一个转折点的连接661
13.6.9 两个转折点的连接664
13.6.10 找出最短距离670
13.7 小结672
|
|