上 疯狂iOS讲义(第2版)——Objective-C 2.0与iPhone/iPad套用开发基础


上 疯狂iOS讲义(第2版)——Objective-C 2.0与iPhone/iPad套用开发基础

文章插图
疯狂iOS讲义(上)(第2版)——Objective-C 2.0与iPhone/iPad套用开发基础【上 疯狂iOS讲义(第2版)——Objective-C 2.0与iPhone/iPad套用开发基础】《疯狂iOS讲义(上)(第2版)——Objective-C2.0与iPhone/iPad套用开发基础(含CD光碟1张)》是2015年4月电子工业出版社出版的图书,作者是李刚 。
基本介绍书名:疯狂iOS讲义(上)(第2版)——Objective-C2.0与iPhone/iPad套用开发基础(含CD光碟1张)
作者:李刚
ISBN:978-7-121-25613-4
页数:716
定价:99.00元 
出版社:电子工业出版社
出版时间:2015年4月
开本:16
内容简介移动网际网路已经成为当今世界发展最快、市场潜力最大、前景最诱人的业务,iOS作为与Android并驾齐驱的作业系统,具有完善的生态圈,而且用户具有良好的付费习惯,因此iOS套用开发者具有良好的发展前景:不仅可入职移动网际网路企业,更可以个人、小团队方式独立创业 。《疯狂iOS讲义(上)(第2版)——Objective-C 2.0与iPhone/iPad套用开发基础》是《疯狂iOS讲义(上)》的第2版,《疯狂iOS讲义(上)(第2版)——Objective-C 2.0与iPhone/iPad套用开发基础》基于最新的iOS 8.1、Xcode6.1为平台,全面介绍了iOS套用开发的基础知识 。书中每个案例、每个截图都全面升级到iOS 8.1 。《疯狂iOS讲义(上)(第2版)——Objective-C2.0与iPhone/iPad套用开发基础》全面、细緻地介绍了Objective-C的面向对象语法、Foundation框架的核心类库用法、档案 IO体系等知识,掌握Objective-C语言是iOS套用开发的基础 。掌握Objective-C语言之后,《疯狂iOS讲义(上)(第2版)——Objective-C 2.0与iPhone/iPad套用开发基础》将带领读者掌握iOS套用开发的基本理论以及iOS套用的MVC设计和事件处理编程,重点介绍了iOS界面编程、iOS套用的生命周期、Quartz 2D绘图、坐标变换、Core Image滤镜、Core Animation动画等内容,掌握这些基础内容之后即可开发简单的iOS游戏,因此《疯狂iOS讲义(上)(第2版)——Objective-C 2.0与iPhone/iPad套用开发基础》最后介绍了一个疯狂连连看的实例 。编辑推荐疯狂iOS讲义(第2版)随书附带光碟提供书中所有案例的原始码,书中每个案例、每个截图都基于iOS 8.1,全部案例通过真机测试 。疯狂iOS讲义(第2版)介绍了iOS 8.1新增的UIVisualEffectView控制项,以及iOS 8.1增强的自动布局功能,并通过示例示範了如何利用Size Class和自动布局来开发自定义不同萤幕尺寸的iOS套用 。作者李刚已出版深受广大App开发人员喜欢的《疯狂iOS讲义》(上)(下)册《疯狂Swift讲义》等iOS开发畅销书 。内容提要《疯狂iOS讲义(上)(第2版)——Objective-C 2.0与iPhone/iPad套用开发基础》并不局限于介绍iOS编程的各种理论知识,而是从“项目驱动”的角度来讲授理论,全书一共包括近百个实例,这些示範性的实例既可帮助读者更好地理解各知识点在实际开发中的套用,也可供读者在实际开发时作为参考、拿来就用 。如果读者在阅读本书时遇到了技术问题,可以登录疯狂Java联盟发帖,笔者将会及时予以解答 。《疯狂iOS讲义(上)(第2版)——Objective-C 2.0与iPhone/iPad套用开发基础》为所有打算深入掌握iOS编程的读者而编写,适合各种层次的iOS学习者和开发者阅读,也适合作为大学教育、培训机构的iOS教材 。但如果只是想简单涉猎iOS套用开发,则《疯狂iOS讲义(上)(第2版)——Objective-C 2.0与iPhone/iPad套用开发基础》过于庞大,不适合阅读 。目录第1章 iOS套用与开发环境 11.1 Objective-C与iOS简介 21.1.1 Objective-C简介 21.1.2 iOS简介 31.2 搭建iOS开发环境 31.2.1 下载并安装Xcode和SDK 41.2.2 安装辅助工具和文档 61.3 第一个Objective-C程式 71.3.1 使用文本编辑器开发Objective-C程式 71.3.2 使用Xcode工具开发Objective-C程式 91.4 熟悉Xcode 111.4.1 创建iOS项目 111.4.2 熟悉导航面板 131.4.3 熟悉检查器面板 161.4.4 熟悉库面板 171.4.5 使用Xcode的帮助系统 191.5 本章小结 22第2章 数据类型和运算符 232.1 注释 242.2 标识符和变数 252.2.1 分隔设定 252.2.2 标识符规则 272.2.3 Objective-C关键字 272.3 数据类型分类 272.4 基本数据类型 282.4.1 整型 282.4.2 NSLog输出函式及格式字元 292.4.3 字元型 312.4.4 浮点型 322.4.5 枚举型 332.4.6 BOOL类型 352.5 类型转换 362.5.1 自动类型转换 362.5.2 强制类型转换 382.5.3 表达式类型的自动提升 382.6 运算符 392.6.1 算术运算符 392.6.2 赋值运算符 422.6.3 位运算符 422.6.4 扩展后的赋值运算符 442.6.5 比较运算符 452.6.6 逻辑运算符 452.6.7 逗号运算符 462.6.8 三目运算符 462.6.9 运算符的结合性和优先权 472.7 本章小结 48第3章 流程控制与数组 493.1 顺序结构 503.2 分支结构 503.2.1 if条件语句 503.2.2 switch分支语句 543.3 循环结构 563.3.1 while循环语句 563.3.2 do while循环语句 583.3.3 for循环 593.3.4 嵌套循环 623.4 控制循环结构 633.4.1 使用break结束循环 633.4.2 使用continue结束本次循环 643.4.3 使用return结束函式 643.5 goto语句 653.6 数组 673.6.1 定义数组 67 3.6.2 数组的显式初始化 683.6.3 使用数组 693.6.4 多维数组 703.6.5 多维数组的初始化 713.6.6 字元数组、字元串与结束标誌 773.6.7 输出字元串和字元串函式 783.6.8 数组的套用举例 803.7 本章小结 81第4章 C语言特性 824.1 函式 834.1.1 定义函式 834.1.2 函式声明 864.1.3 函式的参数传递机制 874.1.4 递归函式 914.1.5 数组作为函式参数 924.1.6 内部函式与外部函式 964.2 局部变数与全局变数 974.2.1 局部变数 984.2.2 全局变数 994.2.3 外部全局变数与内部全局变数 1004.2.4 动态存储与静态存储 1024.3 预处理 1044.3.1 使用#define、#undef执行宏定义 1054.3.2 带参数的宏定义 1064.3.3 使用#ifdef、#ifndef、#else、#endif执行条件编译 1074.3.4 使用#if、#elif、#else、#endif执行条件编译 1094.3.5 #include与#import 1104.4 指针 1114.4.1 指针的概念 1114.4.2 指针变数及其基本用法 1134.4.3 指针变数作为函式参数 1144.5 指针与数组 1174.5.1 指向数组的指针变数 1174.5.2 指针运算 1174.5.3 数组变数作为函式参数 1204.5.4 指向多维数组的指针变数 1224.6 字元串与指针 1244.6.1 使用字元指针表示字元串 1244.6.2 字元指针作为函式参数 1254.7 函式与指针 1264.7.1 用函式指针变数调用函式 1264.7.2 用函式指针变数作为函式参数 1284.7.3 返回指针的函式 1294.8 指针数组和指向指针变数的指针 1304.8.1 指针数组与main()函式形参 1314.8.2 指向指针变数的指针 1334.9 结构体 1344.9.1 定义结构体 1344.9.2 typedef语句 1364.9.3 初始化结构体变数 1374.9.4 结构体数组 1394.10 块 1394.10.1 块的基本语法 1404.10.2 块与局部变数 1414.10.3 直接使用块作为参数 1424.10.4 使用typedef定义块类型 142 4.11 本章小结 144第5章 面向对象(上) 1455.1 类和对象 1465.1.1 定义类 1465.1.2 对象的产生和使用 1505.1.3 对象和指针 1525.1.4 self关键字 1545.1.5 id类型 1575.2 方法详解 1585.2.1 方法的所属性 1585.2.2 形参个数可变的方法 1595.3 成员变数 1605.3.1 成员变数及其运行机制 1605.3.2 模拟类变数 1635.3.3 单例(Singleton)模式 1645.4 隐藏和封装 1655.4.1 理解封装 1655.4.2 使用访问控制符 1655.4.3 理解@package访问控制符 1695.4.4 合成存取方法 1705.4.5 使用点语法访问属性 1755.5 键值编码(KVC)与键值监听(KVO) 1765.5.1 简单的KVC 1765.5.2 处理不存在的key 1795.5.3 处理nil值 1815.5.4 key路径 1825.5.5 键值监听(KVO) 1835.6 对象初始化 1865.6.1 为对象分配空间 1875.6.2 初始化方法与对象初始化 1875.6.3 便利的初始化方法 1895.7 类的继承 1915.7.1 继承的特点 1915.7.2 重写父类的方法 1935.7.3 super关键字 1945.8 多态 1975.8.1 多态性 1975.8.2 指针变数的强制类型转换 2005.8.3 判断指针变数的实际类型 2015.9 本章小结 202第6章 面向对象(下) 2036.1 Objective-C的包装类 2046.1.1 它们不是包装类 2046.1.2 NSValue和NSNumber 2056.2 处理对象 2066.2.1 列印对象和description方法 2066.2.2 ==和isEqual:方法 2086.3 类别与扩展 2126.3.1 类别(category) 2136.3.2 利用类别对类进行模组化设计 2156.3.3 使用类别来调用私有方法 2156.3.4 扩展(extension) 2176.4 协定(protocol)与委託 2196.4.1 规範、协定与接口 2196.4.2 使用类别实现非正式协定 2206.4.3 正式协定的定义 2216.4.4 遵守(实现)协定 2226.4.5 协定与委託(delegate) 225 6.5 使用@try处理异常 2286.5.1 使用@try...@catch...@finally捕获异常 2296.5.2 访问异常信息 2316.5.3 使用@finally回收资源 2326.5.4 抛出异常与自定义异常类 2336.6 Objective-C反射机制 2356.6.1 获得Class 2356.6.2 检查继承关係 2366.6.3 动态调用方法 2376.7 手动记忆体管理 2406.7.1 对象的引用计数 2426.7.2 对象所属权 2446.7.3 方法中的保留和释放 2476.7.4 使用自动释放池 2486.7.5 自动释放池的销毁时机与工作过程 2506.7.6 临时对象与事件循环中的自动释放池 2516.7.7 手动记忆体管理的规则总结 2526.8 自动引用计数 2536.8.1 自动引用计数概述 2536.8.2 @autoreleasepool块 2546.9 本章小结 254第7章 Foundation框架详解 2567.1 字元串(NSString与NSMutableString) 2577.1.1 创建字元串 2577.1.2 NSString的常用功能 2587.1.3 可变字元串(NSMutableString) 2597.2 日期与时间 2607.2.1 日期与时间(NSDate) 2617.2.2 日期格式器(NSDateFormatter) 2627.2.3 日曆(NSCalendar)与日期组件(NSDateComponents) 2647.2.4 定时器(NSTimer) 2657.3 对象複製 2677.3.1 copy与mutableCopy方法 2677.3.2 NSCopying与NSMutableCopying协定 2687.3.3 浅複製与深複製 2707.3.4 setter方法的複製选项 2727.4 Objective-C集合概述 2737.5 数组(NSArray与NSMutableArray) 2747.5.1 NSArray的功能与用法 2747.5.2 对集合元素整体调用方法 2797.5.3 对NSArray进行排序 2807.5.4 使用枚举器遍历NSArray集合元素 2827.5.5 快速枚举(for-in) 2837.5.6 可变数组(NSMutableArray) 2837.5.7 NSArray的KVC与KVO 2857.6 集合(NSSet与NSMutableSet) 286 7.6.1 NSSet的功能与用法 2867.6.2 NSSet判断集合元素重複的标準 2897.6.3 NSMutableSet的功能与用法 2927.6.4 NSCountedSet的功能与用法 2937.7 有序集合(NSOrderedSet与NSMutableOrderedSet) 2947.8 字典(NSDictionary与NSMutableDictionary) 2967.8.1 NSDictionary的功能与用法 2967.8.2 对NSDictionary的key排序 2997.8.3 对NSDictionary的key进行过滤 3017.8.4 使用自定义类作为NSDictionary的key 3027.8.5 NSMutableDictionary的功能与用法 3047.9 谓词 3057.9.1 定义谓词 3057.9.2 使用谓词过滤集合 3067.9.3 在谓词中使用占位符参数 3087.9.4 谓词表达式语法 3097.10 本章小结 311第8章 档案I/O 3128.1 使用NSData与NSMutableData 3138.2 使用NSFileManager管理档案和目录 3148.2.1 访问档案属性和内容 3158.2.2 创建、删除、移动、複製 3168.2.3 查看目录包含的内容 3178.3 使用NSPathUtilities.h管理路径 3188.4 使用NSProcessInfo获取进程信息 3208.5 使用NSFileHandle处理档案IO 3218.6 使用NSURL读取网路资源 3248.7 使用NSBundle处理项目相关资源 3258.8 对象归档 3268.8.1 使用NSKeyedArchiver归档 3268.8.2 实现NSCoding协定 3288.8.3 使用NSData完成自定义归档 3318.8.4 使用归档实现深複製 3338.9 本章小结 334第9章 iOS套用开发入门 3359.1 从iOS项目开始 3369.1.1 iOS项目包含的档案 3369.1.2 Interface Builder简介 3379.1.3 添加控制项 3399.1.4 修改控制项属性 3409.1.5 UIView支持的属性 3429.1.6 UILabel支持的属性 3449.2 MVC 3469.2.1 程式入口 3469.2.2 应用程式代理 3479.2.3 理解iOS的MVC 3499.2.4 掌握UIViewController控制器 350 9.3 事件机制 3529.3.1 程式获取控制项的两种方式 3529.3.2 事件处理的三种方式 3589.4 代码控制UI界面 3649.4.1 不使用界面设计档案开发UI界面 364实例:无界面设计档案开发iOS套用 3649.4.2 使用代码创建UI界面 366实例:动态添加、删除标籤 3679.4.3 自定义UI控制项 369实例:跟随手指运动的小球 3699.5 美化iOS套用 3729.5.1 定製iOS套用图示 3729.5.2 定製iOS套用的启动画面 3739.6 本章小结 375第10章 iOS套用的界面编程 33510.1 UI控制项概述 37710.1.1 活动、静态和被动控制项 37710.1.2 UIControl基类介绍 37710.2 按钮(UIButton) 379实例:丰富多彩的按钮 38110.3 文本框控制项(UITextField) 383实例:用户登录界面 38510.3.1 完成输入后关闭键盘 38610.3.2 触碰背景关闭键盘 38710.4 多行文本控制项(UITextView) 38910.4.1 UIScrollView支持的属性 39010.4.2 使用委託对象处理UITextView事件 392实例1:通过导航按钮关闭虚拟键盘 392实例2:通过自定义键盘附属档案关闭虚拟键盘 39410.4.3 自定义选择内容后的选单 39610.5 开关按钮(UISwitch) 397实例:使用开关控制“手电筒” 39810.6 分段控制项(UISegmentedControl) 399实例1:通过分段控制项控制背景颜色 400实例2:动态增加、删除分段 40110.7 图像控制项(UIImageView) 402实例1:图片浏览器 404实例2:“幻灯片”播放器 40610.8 进度条 40710.8.1 UIProgressView 407实例:定製进度条 40910.8.2 UIActivityIndicatorView 41010.9 拖动条(UISlider) 412实例:通过拖动滑块改变图片透明度 41310.10 警告框(UIAlertView)与UIActionSheet 41510.10.1 UIAlertView的基本用法 41510.10.2 带输入框的UIAlertView 41710.10.3 使用UIActionSheet 419 10.11 日期选择器(UIDatePicker) 421实例:倒计时器 42310.12 选择器(UIPickerView) 42510.12.1 单列选择器 42610.12.2 多列选择器 42710.12.3 相互依赖的多列选择器 42910.12.4 自定义选择器视图 432实例:“老虎机”游戏 43210.13 iOS 8新增的UIVisualEffectView 43510.14 微调器(UIStepper) 43810.15 网页控制项(UIWebView) 440实例:迷你浏览器 44210.16 工具条(UIToolBar) 444实例:自定义工具条控制项 44610.17 表格(UITableView)与表格控制器(UITableViewController) 44810.17.1 简单表格 45010.17.2 处理单元格的选中 454实例:编辑选中行 45410.17.3 定製表格行 459实例1:继承UITableViewCell定製表格行 459实例2:使用动态单元格原型定製表格行 46210.17.4 编辑表格 46410.17.5 多分区表格以及分区索引 47010.17.6 直接使用UITableViewController 47210.17.7 静态单元格 47410.17.8 使用UIRefreshController刷新表格 47710.18 搜寻条(UISearchBar) 47910.18.1 使用搜寻条 48010.18.2 使用UISearchDisplayController 483实例:下拉列表显示搜寻结果 48310.19 导航条(UINavigationBar)与导航控制器(UINavigationController) 48710.19.1 使用导航条 48710.19.2 使用UINavigationController 489实例:查看、编辑图书信息 49110.19.3 使用segue控制过渡 49710.19.4 使用segue控制导航 50110.20 格线(UICollectionView)与格线控制器(UICollectionViewController) 50510.20.1 UICollectionView的功能与用法 50810.20.2 使用UICollectionViewDelegateFlowLayout定製布局 512实例:单元格大小不同的格线 51310.20.3 扩展UICollectionViewLayout定製布局 514实例:环形布局的UICollectionView 51510.20.4 多分区格线 518实例:带页眉、页脚的多分区格线 519 10.20.5 直接使用UICollectionViewController 52310.21 标籤条(UITabBar)与标籤页控制器(UITabBarController) 52610.21.1 使用UITabBar 52710.21.2 使用UITabBarController 52810.21.3 在Storyboard中使用UITabBarController 53110.22 页控制项(UIPageControl)与页控制器(UIPageViewController) 53310.22.1 UIPageControl与UIScrollView结合使用 53310.22.2 使用UIPageViewController 53710.23 iPad套用开发 54110.23.1 使用iPad专用控制项:UISplitViewController 54210.23.2 使用UIPopoverController实现浮动视窗 54910.23.3 开发同时兼容iPhone与iPad的套用 55110.24 本章小结 555第11章 管理iOS套用的运行 55611.1 iOS设备尺寸和自动旋转机制 55711.1.1 配置套用支持的方向 55711.1.2 指定视图控制器支持的方向 55911.2 iOS 8增强的自动布局功能 56011.2.1 自动布局的添加方式 56011.2.2 使用自动布局适应不同尺寸的萤幕 56611.2.3 使用Size Class适应萤幕旋转 57011.3 iOS套用的生命周期 57411.3.1 应用程式的状态 57511.3.2 应用程式启动过程 57611.3.3 程式入口:main函式 57811.3.4 回响中断 57811.3.5 进入后台 58011.3.6 返回前台运行 58111.3.7 应用程式终止 58211.3.8 Main Run Loop 58211.4 本章小结 583第12章 图形、图像与动画 58412.1 使用UIImage和CGImage处理点阵图 58512.1.1 显示动画 585实例:蝴蝶飞舞 58712.1.2 CGImage与CGImageRef 58812.2 Quartz 2D绘图 58812.2.1 Quartz 2D绘图基础:CGContextRef 58812.2.2 绘製几何图形 59112.2.3 点线模式 59312.2.4 绘製文本 59712.2.5 设定阴影 60112.2.6 使用路径 602实例:绘製任意多角星 606 12.2.7 绘製曲线 607实例:使用曲线绘製多瓣花朵 60812.2.8 在记忆体中绘图 609实例:绘图板 61212.2.9 绘製点阵图 617实例:扩展UIImage的功能 61712.3 图形变换 62212.3.1 使用坐标变换 62212.3.2 坐标变换与路径结合使用 623实例:雪花飘飘 62412.3.3 使用矩阵变换 62512.4 控制叠加模式 62812.5 处理填充 63412.5.1 渐变填充 63412.5.2 模式填充 63912.6 使用Core Image滤镜 64412.7 动画 65212.7.1 Core Animation动画基础 65212.7.2 使用CALayer 65312.7.3 使用CATransition控制过渡动画 65612.7.4 使用属性动画 66012.7.5 控制移动路径 665实例:绕圈游动的小鱼 66512.8 本章小结 667第13章 疯狂连连看 66813.1 游戏简介 66913.2 开发游戏界面 67013.2.1 开发界面布局 67013.2.2 开发游戏界面控制项 67113.2.3 处理方块之间的连线线 67613.3 游戏的状态数据模型 67713.3.1 定义数据模型 67713.3.2 初始化游戏状态数据 67813.4 载入界面的图片 68213.5 实现游戏视图控制器 68413.6 实现游戏逻辑 68613.6.1 定义FKGameService的接口代码 68613.6.2 实现FKGameService 68713.6.3 获取触碰点的方块 68813.6.4 判断两个方块是否可以相连 68913.6.5 定义获取通道的工具方法 69113.6.6 没有转折点的横向连线 69213.6.7 没有转折点的纵向连线 69313.6.8 有一个转折点的连线 69313.6.9 有两个转折点的连线 69613.6.10 找出最短距离 70213.7 本章小结 704作者简介李刚,十多年软体行业开发从业经验,疯狂软体教育中心教学总监 。疯狂Java实训营创始人,疯狂Java体系原创图书作者 。广东技术师範学院计算机科学系兼职副教授,51cto专家门诊特邀嘉宾 。培训的学生已在名企就职 。国内着名高端IT技术作家,已出版《疯狂Java讲义》《疯狂Android讲义》《轻量级Java EE企业套用实战》《疯狂iOS讲义(上)(下)》《疯狂Ajax讲义》《疯狂XML讲义》《经典Java EE企业套用实战》《疯狂HTML 5/CSS 3/JavaScript讲义》《Struts 2.x权威指南》等着作 。其中疯狂Java体系图书经多年沉澱,赢得极高的市场认同,多次重印成为畅销书,并被多所“985”“211”院校选作教材 。部分图书已被翻译成繁体中文版、授权到台湾地区 。