3

给别人配机的配机方案

 3 years ago
source link: https://download.csdn.net/download/dmk877/4370527
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
给别人配机的配机方案-IT管理工具类资源-CSDN下载

客客威客系统KPPW v2.5 GBK Beta.zip

2019-07-07

客客威客系统KPPW是一款基于PHP MYSQL技术构架的威客系统 ,积客客团队多年实践和对威客模式商业化运作的大量调查分析而精心策划研发,是您轻松搭建威客网站的首选利器。KPPW针对威客 任务模型进行了细致的分析,提供完善威客任务流程控制解决方案,并将逐步分享威客系统专业化应用作为我们的发展目标。   客客威客系统KPPW更新说明: 修改 前台单页面文章图片不显示 oauth登陆问题 购买服务账号余额不足时选择在线支付进入支付宝支付出错 部分用户商品详细页无法打开 首页宽屏时成功案例第一个大图为服务时链接错误 用户中心基本设置联系方式处的msn,qq必填项改为非必填项 开启邮箱激活后,注册时邮箱激活不成功(成功了,其实就是显示问题) 发布商品页面第一步,协助流程中html标签不解析 admin/tpl/admin_tpl_edit_ad_one.htm页面代码有一小处有问题 发布商品第一步,提交时只验证了上传图片 发布任务上传的图片附件,图片点击放大后,左下角显示的不是文件名,而是“图片名称”几个字 个人店铺里面查看任务信息显示有问题,html标签未解析 中标动态价格没有做位数限制 发布商品上传图片无*,但是不上传图片进入不了下一步,解决办法加上* 计件任务交稿时间过期,无人交稿,没有正常退款 计件悬赏延期加价后,有剩余金额未返还雇主(解决方案:雇主选稿后就不能再延期加价) 增值工具后台价格设置为0元后,发布时未购买成功(解决方案:0元也要能购买成功) 忘记密码,输入用户名,提示不存在,问题GBK中文未转码 后台"咨询管理"-->“关于网站”-->"网站介绍"里面将添加文章功能删除 当用户余额不足,后台也没有开启在线支付接口。页面无提示。 发布服务上传图片没有做必须上传的验证. 后台"附件管理"里面删除附件无效,只能删除数据库数据,文件不能删除 后台文章分类前台没有生效 稿件列表伪静态之后无法翻页 后台幻灯片广告位添加新广告后,新的广告没有排序功能了 协议交付页面当前用户退出,报404错误 速配任务,发布速配任务,账户余额不足,在用户中心速配任务列表点付款,提示您已付款 豆瓣第三方登录图标 店铺html标签问题 登录注册验证码显示问题 返回顶部样式 未经过审核的商品,通过链接别人也能看到,且能购买 普通招标,后台配置的佣金设为0,前台发布普通招标,发布后是未付款的状态 忘记密码找回功能增加必须填写正确的邮箱 举报稿件时,后台屏蔽稿件,任务详细页还是稿件未被屏蔽 新增 更新皮肤 增加ie8的支持 增加ie7图标支持 后台管理目录自定义 主要功能: 全新UI风格设计 全新前后台UI风格设计,严格遵循W3C网页标准,采用HTML5、CSS3开发技术,KPPW2.0的整站设计充分考虑了威客行业用户体验需求和对未来拓展性开发的页面支持性。 商城交易模型化,拓展性更强 威客商城是以卖方市场为导向的新型威客模式,KPPW一直都引领着这一主题的创新发展。新版本在程序构架上让商品模块化,支持类似任务模型一样的独立开发。 全局代码构架改善,更安全更高效 新版本程序结构深入改造,面向对象MVC设计模式,模块化挂接。减少重复造轮子,增加了代码的重用性,需要的时可以安装这个模块,不需要时可以卸载这个模块。 用户经验权限体系改造更体贴 新版本重构了用户经验权限体系,针对威客应用的贴切需求,将雇主信用和威客能力进行了重新规划开发,可与其他更多的威客站点平移数据。 任务模型开发规范,流程更细致 针对威客任务交易日益增长的需求,KPPW对现有的悬赏任务、招标任务进行了重新的开发设计。在老版本基础上确定出了新的用户体验、任务权限、代码规范等多项标准,让任务模型自由拆解和开发拓展性更强。   KPPW2.0产品特色说明: 多年威客行业项目开发沉淀,历时半年开发,重写50W行代码,完全细节优化,客客团队新长征计划【KPPW2.0开发】即将完工。全新的威客应用解决方案,功能更加全面、体验更舒适,让您的威客网站更好运营。 一、全新UI风格设计,提升用户体验 全新前后台UI风格设计,严格遵循W3C网页标准,采用HTML5、CSS3开发技术,KPPW2.0的整站设计充分考虑了威客行业用户体验需求和对未来拓展性开发的页面支持性。从版本界面风格设计上,简洁明了主题突出;随时随地的工具栏,引导用户操作体验更加舒适;模板页面代码样式表模块化,可针对局部自由开发完美兼容整站,且整站模板风格的切换和开发支持性也更加强; 二、全局代码构架改善,更安全更高效 新版本程序结构深入改造,面向对象MVC设计模式,模块化挂接。减少重复造轮子,增加了代码的重用性,需要的时可以安装这个模块,不需要时可以卸载这个模块。采用了数据缓存和模板缓存两种缓存机制,性能更佳。同时大量运用AJAX交互技术,使程序高效,快速的运行,让用户体验得到质的飞跃。新增mysql事务处理机制,解决高并发网站重要数据丢失,数据的不一至性。 三、任务模型开发规范,流程更细致 针对威客任务交易日益增长的需求,KPPW对现有的悬赏任务、招标任务进行了重新的开发设计。在老版本基础上确定出了新的用户体验、任务权限、代码规范等多项标准,让任务模型自由拆解和开发拓展性更强。另新版本中还新增了默认的任务模型,满足目前威客行业基础性任务模型运营的所有要求。 四、商城交易模型化,拓展性更强 威客商城是以卖方市场为导向的新型威客模式,KPPW一直都引领着这一主题的创新发展。新版本在程序构架上让商品模块化,支持类似任务模型一样的独立开发;且针对现有的服务和作品的业务功能进行了进一步细化的深入,满足了大部分的创意型产品的买卖交易。 五、用户经验权限体系改造更体贴 新版本重构了用户经验权限体系,针对威客应用的贴切需求,将雇主信用和威客能力进行了重新规划开发,可与其他更多的威客站点平移数据。在用户的操作权限方面,针对交易流程有独立的权限设置,同时整站还提供用户工具箱,可方便的进行拓展开发。不仅能够让用户体验更好,更为威客站长带来了更多的盈利手段。 六、模板标签数据调用更方便 优化了SEO,伪静态,网站能够更好的被各大搜索引擎收录,让访问量得到进一步的提高。模板标签调用使用简单快捷,支持站内,站外调用。重新开发的广告系统,针对全站的广告位进行了规划设计。除了可以上传广告之外,也可以调用其他广告代码,或者远程广告链接。 七、支付宝悬赏担保交易网站更具公信力 新版本新增最新推出的支付宝悬赏担保交易接口,开启后雇主和威客任务交易,资金冻结在用户自己的支付宝账户内。用户使用更加方便、公信力更强,特别适合威客新站的起步阶段。而系统在后台设置了接口开关,方便站长对这一策略的灵活调动,且不影响站内数据的显示。 八、中小站长互助任务信息,站点数据更饱和 为了满足广大中小站长,团队人手不足,新站建立维护难度大。KPPW后台站长可以开启站长互助任务信息数据,不仅能够饱和新站,而且能够得到有效宣传后的赏金。比其他新站录入不实任务数据更有意义。 九、多语言包、其他账号登陆细节亮点不断。。。 KPPW2.0对近一年多来站长们提交的各种需求细节进行了深入考虑,在整个系统中新增了不少细节功能,如威客地图、多语言包、其他账号登陆、短信通知、威客工具箱、广告系统改造等让网站功能变得丰富,也为站长盈利带来了更多机会。。。   前台首页界面演示图:   后台管理界面演示图:   相关阅读 同类推荐:站长常用源码

26.85MB

iPhone开发秘籍(第2版)--源代码

2012-12-11

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251

该资料是《iPhone开发秘籍:第2版》的源代码 对应的书籍资料见:

iPhone开发秘籍:第2版(iphone开发必备佳作,在第一版的基础上进行了全面修订和大量扩充)

基本信息 原书名: The iPhone Developer's Cookbook: Building Applications with the iPhone 3.0 SDK (2nd Edition) 原出版社: Addison-Wesley Professional 作者: (美)Erica Sadun 译者: 张彩霞 高颖 易磊 丛书名: 图灵程序设计丛书 移动开发类 出版社:人民邮电出版社 ISBN:9787115240019 上架时间:2010-11-11 出版日期:2010 年11月 开本:16开 页码:654 版次:2-1

编辑推荐   iPhone开发的重量级参考书    揭示官方文档未详述的细节    代码示例清晰易懂

内容简介    《iphone开发秘籍(第2版)》提供了关于iphone sdk以及iphone开发的全面信息,对iphone sdk中的各种组件做了深入浅出的介绍,包括iphone 3.0 sdk的所有新增特性,同时对iphone开发的基本流程、基本原理和基本原则进行了详细且通俗的讲解。此外,还结合实例讲解了如何开发各种iphone特性,包括视图、视图控制器、警告、表格、媒体、控件、人物、位置和事件。   《iphone开发秘籍(第2版)》适合iphone和mac开发人员。

作译者 作者:(美国)萨丹(Erica Sadun) 译者:张彩霞 高颖 易磊 等 萨丹(Erica Sadun),著名iPhone技术专家,畅销书作者。佐治亚理工学院计算机科学博士。拥有多年Apple开发经验。著有30多本技术书籍。涉及编程、数字媒体、网站设计和数码摄影等多个领域。Erica开发了十多个本地应用。他常在其iPhone编程博客发表些极有见地的文章。

目录 封面 -26 封底 -25 扉页 -24 版权 -23 版权声明 -22 译者序 -20 致谢 -19 前言 -18 目录 -9 第1章 iPhone SDK简介 1 1.1 iPhone开发人员计划 1 1.1.1 在线开发人员计划 1 1.1.2 标准开发人员计划 2 1.1.3 企业开发人员计划 2 1.1.4 大学开发人员计划 2 1.1.5 注册 2 1.2 开始 2 1.2.1 下载SDK 2 1.2.2 开发设备 3 1.2.3 模拟器的限制 4 1.2.4 Tethering 4 1.3 理解型号差异 5 1.3.1 摄像头 5 1.3.2 扬声器和麦克风 5 1.3.3 手机 6 1.3.4 Core Location的差异 6 1.3.5 振动支持和接近传感器 6 1.3.6 处理器速度 6 1.3.7 OpenGL ES 7 1.4 平台限制 7 1.4.1 存储限制 7 1.4.2 数据访问限制 7 1.4.3 内存限制 7 1.4.4 交互限制 8 1.4.5 电量限制 8 1.4.6 应用程序限制 8 1.4.7 用户行为限制 9 1.5 SDK限制 9 1.6 使用开发人员门户 9 1.6.1 建立团队 10 1.6.2 请求证书 10 1.6.3 注册设备 11 1.6.4 注册应用程序标识符 11 1.6.5 设置 12 1.7 组建iPhone项目 12 1.7.1 iPhone应用程序的主干 13 1.7.2 main.m 14 1.7.3 应用程序委托 15 1.7.4 视图控制器 16 1.7.5 关于本书示例代码的说明 16 1.8 iPhone应用程序组件 17 1.8.1 应用程序文件夹层次结构 17 1.8.2 可执行文件 17 1.8.3 Info.plist文件 17 1.8.4 图标和默认图像 19 1.8.5 NIB文件 20 1.8.6 应用程序束中不存在的文件 20 1.8.7 IPA归档 20 1.8.8 沙盒 20 1.9 编程范例 21 1.9.1 面向对象编程 21 1.9.2 模型—视图—控制器 22 1.10 小结 27 第2章 构建第一个项目 28 2.1 创建新项目 28 2.2 用模板构建Hello World应用程序 29 2.2.1 创建新项目 29 2.2.2 Project窗口 30 2.2.3 Detail窗格 31 2.2.4 编辑器窗口 32 2.2.5 查看项目 32 2.2.6 打开视图控制器.xib 33 2.2.7 编辑视图 34 2.2.8 运行应用程序 34 2.3 使用模拟器 35 2.4 极简单的Hello World 36 2.4.1 浏览SDK API 38 2.4.2 将Interface Builder文件转换成Objective-C代码 39 2.5 使用调试器 41 2.5.1 设置断点 41 2.5.2 打开调试器 41 2.5.3 运行程序 41 2.5.4 查看标签 42 2.5.5 设置另一个断点 42 2.5.6 使用文本消息 43 2.5.7 移动Clear Log按钮 43 2.5.8 启用Zombie 44 2.6 内存管理 45 2.6.1 泄漏 45 2.6.2 缓存 45 2.7 秘诀:使用Instruments检测内存泄漏 46 2.8 秘诀:使用Instruments监视缓存对象的内存分配 48 2.9 使用Clang静态分析器 50 2.10 针对iPhone进行构建 51 2.10.1 安装开发配置 51 2.10.2 编辑应用程序标识符 51 2.10.3 设置Code Signing Identity 52 2.10.4 编译和运行Hello World应用程序 53 2.10.5 对编译后的应用程序签名 53 2.11 从Xcode到iPhone:Organizer Interface 54 2.11.1 Projects and Sources列表 54 2.11.2 Devices列表 55 2.11.3 iPhone Development Tools列表 55 2.11.4 Summary选项卡 55 2.11.5 Console选项卡 56 2.11.6 Crash Logs选项卡 56 2.11.7 Screenshot选项卡 57 2.12 使用编译器指令 57 2.12.1 获得特定于iPhone的定义 58 2.12.2 运行时检查 58 2.12.3 记忆标记 59 2.12.4 折叠方法 60 2.13 针对发布进行构建 60 2.14 清除构建 61 2.14.1 针对App Store进行编译 62 2.14.2 调试App Store上传 63 2.15 针对临时发布进行构建 64 2.15.1 注册设备 64 2.15.2 构建临时配置 64 2.15.3 在项目中添加授权文件 64 2.15.4 在设置中添加授权文件 64 2.15.5 构建临时应用程序 65 2.15.6 为临时发布添加图片 65 2.16 定制Xcode标识 66 2.17 创建自定义Xcode模板 66 2.17.1 覆盖com.yourcompany 67 2.17.2 构建其他模板 67 2.18 并排查看代码 68 2.19 小结 69 第3章 Objective-C训练营 70 3.1 Objective-C编程语言 70 3.2 类与对象 70 3.2.1 创建对象 72 3.2.2 内存分配 72 3.2.3 释放内存 73 3.3 方法、消息和选择器 73 3.3.1 动态类型检查 74 3.3.2 继承方法 75 3.3.3 声明方法 76 3.3.4 实现方法 76 3.3.5 类方法 78 3.3.6 快速枚举 78 3.4 类层次结构 79 3.5 日志信息 79 3.6 属性 81 3.6.1 点表示法 81 3.6.2 属性与内存管理 81 3.6.3 创建属性 82 3.6.4 创建自定义的取值方法和赋值方法 83 3.6.5 属性的特性 84 3.7 简单的内存管理 85 3.7.1 创建对象 85 3.7.2 创建自动释放的对象 86 3.7.3 自动释放对象的生命周期 87 3.7.4 保留自动释放的对象 87 3.7.5 已保留属性 87 3.7.6 高保留计数 89 3.7.7 创建对象的其他方式 90 3.7.8 释放对象 91 3.8 创建单例 93 3.9 类别(扩展类) 93 3.10 协议 94 3.10.1 定义协议 95 3.10.2 合并协议 95 3.10.3 增加回调 95 3.10.4 声明可选回调 96 3.10.5 实现可选回调 96 3.10.6 符合协议 97 3.11 Foundation类 97 3.11.1 字符串 98 3.11.2 数字与日期 101 3.11.3 集合 103 3.12 补充内容:消息转发 107 3.12.1 实现消息转发 108 3.12.2 使用转发消息 109 3.12.3 思路整理 109 3.12.4 超级简单的转发 110 3.13 小结 110 第4章 设计界面 111 4.1 UIView和UIWindow 111 4.1.1 显示数据的视图 111 4.1.2 做出选择的视图 112 4.1.3 控件 112 4.1.4 表格和拾取器 113 4.1.5 栏 113 4.1.6 进度与活动 114 4.2 UIViewController 114 4.2.1 UIViewController 114 4.2.2 UINavigationController 115 4.2.3 UITabBarController 115 4.2.4 表格控制器 115 4.2.5 地址簿控制器 116 4.2.6 UIImagePickerController 116 4.2.7 邮件撰写 116 4.2.8 GKPeerPickerController 116 4.2.9 Media Player控制器 117 4.3 视图设计几何学 117 4.3.1 状态栏 117 4.3.2 导航栏、工具栏和选项卡栏 118 4.3.3 键盘和拾取器 119 4.3.4 文本字段 120 4.3.5 UIScreen类 120 4.4 构建界面 120 4.5 实战演练:使用IB构建温度单位转换器 121 4.5.1 新建项目 121 4.5.2 添加媒体 121 4.5.3 Interface Builder 121 4.5.4 编辑导航栏 122 4.5.5 替换主视图 123 4.5.6 启用仿真元素 123 4.5.7 创建图像背景 123 4.5.8 添加标签和视图 123 4.5.9 测试界面 124 4.5.10 添加出口和动作 124 4.5.11 检查新类头 125 4.5.12 添加连接 126 4.5.13 获取紫色 126 4.5.14 定义转换方法 127 4.5.15 运行应用程序 127 4.6 实战演练:手动构建温度单位转换器界面 127 4.7 实战演练:创建混合转换器 130 4.7.1 清理基本模板 131 4.7.2 通过.xib添加新视图控制器类 131 4.7.3 设计界面 131 4.7.4 编辑视图控制器实现 132 4.7.5 编辑main.m 132 4.7.6 运行应用程序 133 4.8 实战演练:直接从代码加载.xib文件 133 4.8.1 清理.xib 134 4.8.2 更新loadView 134 4.9 针对旋转进行设计 134 4.10 启用旋转 135 4.11 自动调整大小 136 4.11.1 自动调整大小示例 136 4.11.2 评估自动调整大小选项 138 4.12 移动视图 138 4.13 交换视图 141 4.14 补充内容:6个有用的Interface Builder技巧 142 4.15 小结 143 第5章 使用视图控制器 144 5.1 使用导航控制器开发 144 5.1.1 设置导航控制器 144 5.1.2 推入和弹出视图控制器 145 5.1.3 导航项类 145 5.1.4 模态演示 146 5.2 实用工具函数 146 5.3 秘诀:构建一个简单的双项菜单 147 5.4 秘诀:添加一个分段控件 149 5.5 秘诀:在视图控制器之间导航 150 5.6 秘诀:使用创意弹出选项 152 5.6.1 加载一个视图控制器数组 152 5.6.2 推入临时视图 152 5.7 秘诀:演示一个自定义模态信息视图 153 5.8 秘诀:选项卡栏 155 5.9 秘诀:记住选项卡状态 157 5.10 补充点:Interface Builder和选项卡栏控制器 160 5.11 小结 161 第6章 组合视图和动画 162 6.1 视图层次结构 162 6.2 秘诀:建立视图层次结构树 163 6.3 秘诀:查询子视图 164 6.4 管理子视图 166 6.4.1 添加子视图 166 6.4.2 重新排序和删除子视图 166 6.4.3 视图回调 166 6.5 秘诀:标记和检索视图 167 6.6 秘诀:命名视图 168 6.7 视图的几何特征 172 6.7.1 框架 172 6.7.2 变换 173 6.7.3 坐标系 173 6.8 秘诀:视图框架的处理 173 6.8.1 调整大小 174 6.8.2 CGRect和中心 175 6.8.3 其他实用工具方法 176 6.9 秘诀:移动带边界的视图到任意位置 179 6.10 秘诀:视图变形 180 6.11 显示和交互特性 183 6.12 UIView动画 183 6.12.1 建立UIView动画块 184 6.12.2 动画回调 184 6.13 秘诀:视图的淡入和淡出 185 6.14 秘诀:视图交换 186 6.15 秘诀:翻转视图 187 6.16 秘诀:使用Core Animation Transitions 188 6.17 秘诀:一般的Core Animation调用 190 6.18 翻页过渡 192 6.19 秘诀:当视图显示时反弹视图 193 6.20 秘诀:图像视图动画 195 6.21 补充内容:给视图添加映射 196 6.22 小结 199 第7章 图像处理 201 7.1 秘诀:查找和加载图像 201 7.1.1 读取图像数据 201 7.1.2 加载图像文件 203 7.2 秘诀:从iPhone相册访问照片 205 7.2.1 使用图像拾取器 206 7.2.2 添加2.x支持 206 7.2.3 添加3.1支持 206 7.2.4 拾取视频 206 7.3 秘诀:选择和定制相册中的图像 208 7.4 秘诀:拍摄照片并将照片写到相册上 210 7.5 秘诀:将图片保存到Documents文件夹 212 7.6 秘诀:通过电子邮件发送图片 213 7.7 秘诀:捕捉定时拍摄的照片 214 7.8 秘诀:使用定制摄像头覆盖图 216 7.9 秘诀:在可滚动视图中显示图像 218 7.10 秘诀:创建多图像分页滚动 220 7.11 秘诀:从头开始创建新图像 221 7.12 秘诀:构建图像缩略图 224 7.13 调整照片方向 227 7.14 捕捉屏幕截图 229 7.15 秘诀:直接处理位图 230 7.15.1 在位图上下文中绘制 230 7.15.2 应用图像处理 232 7.15.3 图像处理实况 233 7.16 补充内容:灰度模式 236 7.17 小结 237 第8章 手势和触摸 238 8.1 触摸 238 8.1.1 阶段 238 8.1.2 触摸和视图方法 239 8.1.3 触摸视图 239 8.1.4 多点触摸 240 8.2 秘诀:添加一个简单直观的操作界面 240 8.3 秘诀:限制移动 241 8.4 秘诀:测试触摸 242 8.5 秘诀:测试位图上的触摸 243 8.6 秘诀:向直接操作界面添加持久性 246 8.6.1 存储状态 246 8.6.2 恢复状态 247 8.7 秘诀:通过归档实现持久性 248 8.8 秘诀:添加撤销支持 250 8.8.1 创建撤销管理器 250 8.8.2 子视图撤销支持 250 8.8.3 使用导航栏 250 8.8.4 注册撤销 251 8.9 秘诀:添加晃动控制的撤销支持 252 8.9.1 添加撤销和恢复的动作名称 253 8.9.2 提供晃动以编辑支持 253 8.9.3 设置第一个响应程序 253 8.10 秘诀:屏幕绘图 254 8.11 秘诀:线的计算 255 8.12 秘诀:检测圆形 257 8.13 秘诀:多点触摸 259 8.14 秘诀:区分手势 260 8.15 补充内容:交互式调整大小和旋转 264 8.16 小结 269 第9章 构建和使用控件 270 9.1 UIControl类 270 9.1.1 控件种类 270 9.1.2 控件事件 270 9.2 按钮 272 9.3 在Interface Builder中添加按钮 273 9.3.1 样式 273 9.3.2 连接按钮与动作 274 9.3.3 假按钮 275 9.4 在Xcode中构建定制按钮 275 9.5 多行按钮文本 277 9.6 向按钮添加动画元素 277 9.7 秘诀:为按钮响应制作动画效果 278 9.8 秘诀:使用开关 279 9.9 秘诀:添加定制滑块缩略图 281 9.9.1 定制UISlider 281 9.9.2 增加效能 282 9.10 秘诀:创建一个可两次点击的分段控件 286 9.11 秘诀:子类化UIControl 287 9.11.1 跟踪触摸 288 9.11.2 分派事件 288 9.12 秘诀:关闭UITextField键盘 290 9.12.1 文本特征属性 291 9.12.2 其他文本字段属性 291 9.13 秘诀:关闭UITextView键盘 292 9.14 秘诀:构建更好的文本编辑器 294 9.15 秘诀:文本输入筛选 296 9.16 秘诀:添加一个页面指示器控件 298 9.17 秘诀:创建一个可定制的分页滚动条 300 9.18 秘诀:构建工具栏 304 9.18.1 在Xcode中构建工具栏 305 9.18.2 工具栏提示 307 9.19 补充内容:智能标签 307 9.20 小结 308 第10章 提醒用户 309 10.1 通过警告框直接与用户对话 309 10.1.1 构建简单的警告框 309 10.1.2 警告框委托 310 10.1.3 显示警告框 311 10.1.4 警告框类 311 10.2 秘诀:无按钮警告框 312 10.3 秘诀:使用run循环创建模态警告框 313 10.4 秘诀:要求用户进行文本输入 316 10.5 秘诀:对警告框视图使用可变参数 318 10.6 秘诀:展示简单的菜单 319 10.7 秘诀:在动作表中显示文本 321 10.8 “Please Wait”:向用户显示进度 321 10.9 秘诀:构建UIProgressView 322 10.10 构建定制覆盖图 324 10.11 秘诀:可点击的覆盖图 326 10.12 秘诀:可调整方向的滚动警告框 327 10.13 秘诀:使用网络活动指示器 329 10.14 秘诀:给应用程序贴标记 329 10.15 秘诀:简单的音频警告 330 10.15.1 系统声音 330 10.15.2 震动 331 10.15.3 警告 331 10.15.4 延迟 332 10.16 补充内容:展示音量警告框 333 10.17 小结 333 第11章 创建和管理表格视图 335 11.1 UITableView和UITableView- Controller简介 335 11.2 秘诀:实现最基本的表格 337 11.2.1 填充表格 337 11.2.2 数据源方法 338 11.2.3 重用单元格 338 11.2.4 字体表格示例 338 11.3 秘诀:更改表格的背景色 340 11.4 秘诀:创建表格图像后挡板 341 11.5 秘诀:单元格类型研究 343 11.6 秘诀:使用Interface Builder构建定制单元格 344 11.6.1 创建定制单元格的技巧 346 11.6.2 增加定制选择特性 347 11.7 秘诀:单元格颜色交替 347 11.8 秘诀:使用内置控件构建定制单元格 348 11.9 秘诀:记住定制单元格的控制状态 350 11.10 秘诀:创建勾选的表格单元格 353 11.11 移除单元格选中时的高亮显示状态 354 11.12 秘诀:处理展开配件 355 11.13 秘诀:删除单元格 357 11.13.1 显示删除控件 357 11.13.2 隐藏删除控件 357 11.13.3 处理删除请求 357 11.13.4 滑动单元格 358 11.13.5 添加单元格 358 11.14 秘诀:对单元格重新排序 360 11.15 秘诀:向表格添加撤销支持 361 11.15.1 支持“晃动以编辑” 362 11.15.2 添加Undo和Redo按钮 362 11.15.3 执行撤销和恢复 363 11.15.4 准备表格撤销操作 364 11.16 秘诀:表格排序 366 11.17 秘诀:搜索表格 367 11.17.1 构建搜索显示控制器 367 11.17.2 构建可搜索数据源方法 368 11.17.3 委托方法 369 11.18 秘诀:处理分段 370 11.18.1 创建基于分段的数据结构 370 11.18.2 分段计数和行计数 371 11.18.3 返回单元格 371 11.18.4 创建标题 372 11.18.5 创建分段索引 373 11.18.6 分段委托 374 11.19 秘诀:创建分组表格 374 11.20 秘诀:定制表头和脚注 375 11.21 秘诀:创建带有各种单元格类型和高度的分组表格 377 11.22 秘诀:构建多轮表格 380 11.23 秘诀:使用基于视图的选取器 383 11.24 秘诀:使用UIDatePicker 385 11.25 补充内容:格式化日期 388 11.26 小结 390 第12章 使用GameKit和Bonjour进行连接 391 12.1 秘诀:创建基本的GameKit服务 391 12.1.1 GameKit蓝牙限制 391 12.1.2 设备限制 392 12.1.3 会话 392 12.1.4 服务器、客户端、对等机 393 12.1.5 对等机连接过程 393 12.1.6 发送和接收数据 395 12.1.7 状态更改 396 12.1.8 创建GameKit辅助类 397 12.2 秘诀:后台监控 402 12.3 秘诀:通过GameKit发送复杂数据 403 12.4 秘诀:GameKit语音聊天 405 12.4.1 将GameKit作为中间人 405 12.4.2 实现语音聊天 406 12.5 秘诀:使用Bonjour创建iPhone服务器 407 12.6 秘诀:为iPhone Bonjour服务创建Mac客户端 411 12.7 秘诀:解决实际GameKit限制 414 12.7.1 使用iPhone粘贴板 415 12.7.2 存储数据 415 12.7.3 检索数据 415 12.7.4 可靠的粘贴板 415 12.8 秘诀:通过BonjourHelper连接iPhone进行游戏 418 12.8.1 注册Bonjour名称和端口 419 12.8.2 双工连接 419 12.8.3 读取数据 419 12.8.4 关闭连接 419 12.9 创建“在线”GameKit连接 426 12.10 补充内容:扫描服务 428 12.11 小结 431 第13章 网络连接 432 13.1 秘诀:检查网络状态 432 13.2 秘诀:为可达性扩展UIDevice类 433 13.3 秘诀:扫描连接变化 436 13.4 秘诀:重新获得IP和主机信息 439 13.5 秘诀:检查站点可用性 441 13.6 秘诀:同步下载 443 13.7 秘诀:异步下载 445 13.8 秘诀:应对身份验证的挑战 450 13.9 秘诀:使用密钥链存储敏感数据 451 13.9.1 密钥链包装器 451 13.9.2 密钥链持久性 452 13.10 秘诀:通过POST上传 453 13.11 秘诀:上传数据 456 13.12 秘诀:在应用程序之间共享密钥链 459 13.13 秘诀:将XML转换为树 460 13.13.1 构建解析树 461 13.13.2 使用树结果 462 13.13.3 分解树 464 13.14 秘诀:构建一个简单的基于Web的服务器 465 13.15 补充内容:FTPHelper 468 13.16 小结 469 第14章 设备能力 471 14.1 秘诀:访问核心设备信息 471 14.2 添加设备功能限制 472 14.3 秘诀:重新获得更多设备信息 473 14.4 秘诀:监控iPhone的电池状态 475 14.5 秘诀:启用和禁用接近传感器 476 14.6 秘诀:使用加速度将方向定位为“向上” 477 14.7 秘诀:使用加速度移动屏幕上的对象 479 14.8 秘诀:检测设备方向 481 14.9 秘诀:利用运动事件检测晃动 482 14.10 秘诀:直接从加速计检测晃动 484 14.11 补充内容:检查可用的磁盘空间 487 14.12 小结 487 第15章 音频、视频和媒体工具 488 15.1 秘诀:使用AVAudioPlayer播放音频 488 15.1.1 初始化音频播放器 488 15.1.2 监控音量水平 489 15.1.3 回放进度和拖曳播放 490 15.1.4 捕获回放结束 490 15.2 秘诀:循环播放音频 494 15.3 秘诀:处理音频中断 496 15.4 秘诀:忽略休眠的音频 497 15.5 秘诀:录制音频 499 15.6 秘诀:使用音频队列录制音频 503 15.7 秘诀:使用媒体播放器播放视频 508 15.8 秘决:录制视频 510 15.9 秘诀:选取和编辑视频 512 15.10 秘诀:使用MPMediaPicker- Controller选取音频 514 15.11 秘诀:创建媒体查询 517 15.11.1 建立查询 517 15.11.2 使用谓词 518 15.11.3 解决速度问题 519 15.12 秘诀:使用MPMusicPlayer- Controller 520 15.13 补充内容:额外的电影播放器属性 524 15.14 小结 524 第16章 推送通知 525 16.1 推送通知简介 525 16.1.1 推送技术的工作原理 526 16.1.2 多个提供商支持 526 16.1.3 安全 527 16.1.4 推送的局限性 527 16.2 准备推送 527 16.2.1 生成一个应用程序标识符 528 16.2.2 生成SSL证书 528 16.2.3 推送服务特有的准备文件 530 16.3 注册应用程序 530 16.3.1 检索设备令牌 531 16.3.2 处理令牌请求错误 532 16.3.3 响应通知 532 16.4 秘诀:推送客户端框架 533 16.5 构建通知的有效内容 538 16.5.1 本地化警告 539 16.5.2 从字典转换为JSON 539 16.5.3 自定义数据 540 16.5.4 启动时接收数据 540 16.6 秘诀:发送通知 541 16.7 秘诀:实际使用推送服务 545 16.8 反馈服务 549 16.9 推送服务设计 550 16.10 小结 550 第17章 使用Core Location和MapKit 552 17.1 Core Location的工作原理 552 17.1.1 GPS定位 552 17.1.2 Skyhook Wi-Fi定位 552 17.1.3 蜂窝基站定位技术 553 17.1.4 因特网提供商定位技术 553 17.1.5 混合使用这些方法 553 17.2 秘诀:Core Location简介 554 17.3 秘诀:跟踪速率 556 17.4 秘诀:计算速率和距离 557 17.5 秘诀:使用heading值跟踪北向 559 17.6 秘诀:逆向地理编码 561 17.7 秘诀:查看位置 562 17.8 秘诀:用户位置注解 565 17.9 秘诀:创建地图注解 567 17.9.1 创建、添加和删除注解 568 17.9.2 注解视图 568 17.9.3 自定义注解视图 569 17.9.4 响应注解按钮轻击事件 570 17.10 补充内容:地理编码 574 17.11 小结 577 第18章 连接地址簿 578 18.1 秘诀:使用地址簿 578 18.1.1 地址簿UI 578 18.1.2 地址簿 578 18.1.3 检索和设置ABRecord字符串 579 18.1.4 简单的日期属性 581 18.1.5 获取和设置多值记录属性 581 18.1.6 地址和即时消息属性 584 18.1.7 使用地址簿图像 586 18.1.8 创建、添加和删除记录 586 18.1.9 搜索联系人 587 18.1.10 处理分组 588 18.1.11 ABContact、ABGroup和ABContactsHelper 590 18.2 秘诀:搜索地址簿 590 18.3 秘诀:访问图像数据 592 18.4 秘诀:选取人员 594 18.5 秘诀:限制联系人选取器属性 595 18.6 秘诀:添加新联系人 597 18.7 秘诀:修改现有联系人 599 18.8 秘诀:ABUnknownPersonView-Controller 600 18.9 补充内容:添加随机的联系人拼图 602 18.10 小结 604 第19章 使用Core Data 605 19.1 Core Data简介 605 19.1.1 创建和编辑模型文件 605 19.1.2 生成头文件 606 19.1.3 创建Core Data上下文 607 19.1.4 添加对象 608 19.1.5 查询数据库 610 19.1.6 检测更改 611 19.1.7 删除对象 611 19.2 秘诀:将Core Data用作表格数据源 613 19.3 秘诀:搜索表与Core Data 616 19.4 秘诀:集成Core Data表与实时数据编辑 618 19.5 秘诀:使用Core Data实现撤销—重做支持 620 19.6 小结 622 第20章 StoreKit:应用程序内购买 623 20.1 StoreKit入门 623 20.2 创建测试账户 625 20.3 创建应用程序内购买商品 625 20.3.1 填写定价部分 626 20.3.2 添加商品详细信息 627 20.3.3 提交购买GUI屏幕截图 628 20.3.4 开发人员批准 628 20.4 提交应用程序 628 20.5 构建GUI 629 20.6 购买商品 631 20.6.1 注销iTunes账户以进行测试 631 20.6.2 购买之后重新获得编程控制 631 20.6.3 注册购买商品 632 20.6.4 恢复购买商品 633 20.6.5 购买多个商品 634 20.6.6 处理注册购买过程中的延迟 634 20.7 验证收据 634 20.8 小结 636 第21章 辅助功能以及其他iPhone OS服务 637 21.1 将VoiceOver辅助功能添加到应用程序 637 21.1.1 Interface Builder中的辅助功能 637 21.1.2 在代码中使用辅助功能 639 21.1.3 使用模拟器进行测试 640 21.1.4 在iPhone上测试辅助功能 640 21.2 秘诀:添加自定义设置包 641 21.2.1 Settings应用程序 642 21.2.2 避免敏感信息 643 21.2.3 Settings模式 643 21.2.4 定义设置包 643 21.2.5 设置和用户 647 21.2.6 检查用户默认值 647 21.3 秘诀:创建基于URL的服务 648 21.3.1 使用URL模式 648 21.3.2 服务缺点 648 21.3.3 交叉促销 649 21.3.4 注册模式:声明URL 649 21.3.5 注册模式:添加处理程序方法 649 21.3.6 使调用应用程序恢复控制 650 21.3.7 实现自定义模式 651 21.4 小结 652 附录A Info.plist密钥 653

译者序   iPhone SDK是苹果公司提供的一种软件开发工具包,它允许第三方为iPhone和iPod Touch创建应用程序。该软件包意义重大,因为苹果公司并不能满足所有人对iPhone应用的需求。开发人员可以使用iPhone SDK轻松地为iPhone和iPod Touch创建应用程序。其简易的操作方式和强大的功能也为开发人员带来了无限可能。   本书提供了关于iPhone SDK以及iPhone开发的全面信息。全书采用理论与实践相结合的方式,指导读者创建一系列小应用程序,让读者能在实践中理解iPhone应用程序的运行方式和构建方式,并掌握具体的iPhone特性以及控制这些特性或与其交互的方式。   全书共分为21章和一个附表,内容涉及iPhone开发中经常用到的一些基本组件,包括视图、视图控制器、警告和表格,如何开发各种高级iPhone特性,其中包括媒体、控件、人物、位置和事件,还有连接服务和高级的Cover Flow编程技巧等。   本书覆盖面广、结构清晰合理,是一本出色的iPhone开发入门指南。本书面向已经熟悉Objective-C、Cocoa框架和Xcode工具,并且要为iPhone和iPod touch构建应用程序的开发人员。如果你不熟悉这些工具,书中也提供了对Objective-C的快速简介以及对Xcode工具的介绍,可以帮助你快速上手。通过清晰、全面的示例,读者可迅速上手并开始进行高效率的开发。   iPhone SDK是一个新兴的软件开发平台,且目前国内关于iPhone开发的书籍不太多。本书集适用性、易读性和参考性于一身,一定能成为iPhone开发人员和爱好者的首选。   本书由张彩霞、高颖、易磊、陈华全、谢俊、徐红霞、杨越、张波和盛海艳等翻译审校,在翻译过程中,得到了图灵公司傅志红老师的帮助和支持,在此一并致谢。但由于译者的知识局限,加之时间也比较仓促,译文中难免会出现一些疏漏,诚恳地希望广大读者给予批评指正。   将本书献给我最爱的丈夫Alberto,感谢他多年来一直容忍我谈论太多的小工具和SDK,并始终亲切耐心地陪伴着我。

前言   鲜有平台能与iphone开发技术媲美。iPhone将基于OS X的移动计算与创新的多点触摸屏幕、位置感知、板载加速计等结合在一起。苹果公司于2008年3月首次发布iPhone SDK beta时,开发人员蜂拥而至,一度造成服务器瘫痪。不到一周,iphone SDK的下载量就超过10万。   到本书截稿时,开发人员已经为App Store提供了5万多个应用程序 ,可供3 000多万iPhone和2 000多万iPod touch用户选择。随着iPhone生态系统的不断壮大,本书作为一本可供iPhone开发人员使用的资源也将不断改进。   这一版新增的内容   如果你已经购买了本书的第一版,你可能会问,我为什么还要购买新版?答案很简单:这两本书的厚度不一样。新版比旧版的页数要多出两倍多。是的,我们增加了将近500页的新内容,以囊括iPhone 3.0 SDK的所有新增特性,并扩展了第一版中介绍过的一些主题。   这一版的新增内容包括:   如何使用Xcode和Interface Builder;   一个Objective-C入门教程;   针对iPhoneCore Data;   MapKit和Core Location;   使用GameKit开发除游戏之外的聊天和Bonjour联网功能;   高级动作检测,包括支持晃动以撤销(shake-to-undo)功能;   新的搜索显示控制器类,以及自定义表头和脚注;   苹果公司的新设备性能规范;   使用StoreKit的应用内购买;   来自客户端和服务器端的推送通知;   搜索和播放内置iPod库的媒体;   视频捕获和编辑,以及新的AV音频播放器和记录器类;   如何在应用程序中利用Accessibility框架,包括VoiceOver;   更多其他内容。   你也会注意到,我们虚心接受了大家的反馈。第一版出版后,很多人对那本书的目标读者有些困惑。它是面向新开发人员还是有经验的开发人员?我们也对此进行了处理。虽然本书面向已经熟悉Objective-C、Xcode和Cocoa框架的有经验的iPhone和Mac开发人员,但这个新版本包含一个“Objective-C训练营”(见第3章),且介绍了Xcode和Interface Builder,目的是帮助有其他语言(或平台)经验的开发人员快速进入Mac/iPhone的世界。 .  众所周知,任何一本书都不可能面面俱到,但这无疑是我们努力追求的目标。我们希望你能喜欢这本厚书带来的变化,如果是,请一定要在Amazon上发表评论,或给我发送电子邮件([email protected])。   本书的目标读者   本书面向希望为iPhone和iPod touch构建应用程序的有经验的开发人员。你应该已经熟悉Objective-C、Cocoa框架和Xcode工具。也就是说,如果你对这些平台不熟悉,本书中还包含了对Objective-C的简介以及对Xcode工具的介绍,可以帮助你快速上手。   刚喜欢上Mac或iPhone   如果你有一些C语言编程经验,或使用过另一种面向对象的语言,比如C++或Java,后面专门有一节指导你如何成为一名Mac开发人员。千万别错过“成为Mac/iPhone开发人员”一节。   虽然每位程序员对表格都有不同的目标和经验,但大多数iPhone开发人员在开发工作中都需要解决类似任务。   如何构建表格?   如何创建安全的Keychain项?   如何搜索地址簿?   如何在视图之间切换?   如何使用Core Location和iPhone 3GS的电子罗盘?   本书针对的正是不知道如何解决这些问题的读者。通过清晰、完备的示例,本书将帮助你迅速起步和使用iPhone SDK。最棒的是,本书的所有秘诀都在实际应用程序中经过了测试,可以为你正在构建的应用程序提供现成的解决方案。   阅读本书的条件   不言而喻,如果你打算为iPhone或iPod touch构建应用程序,就需要以下设备中的至少一种来检验你的应用程序。开始iPhone或iPod touch编程的基本条件如下。   苹果公司的iPhone SDK。从苹果公司的iPhone开发人员中心(http://developer.apple.com/iphone)下载最新版的iPhone SDK。下载之前,你必须加入苹果公司的(免费的)开发人员计划。不过,如果你打算通过App Store销售应用程序,就需要成为付费的iPhone开发人员,个人为99美元/年,企业为299美元/年。注册的开发人员会收到证书,允许他们“登录”和下载iPhone/iPod touch应用程序,以进行测试和调试。   大学/学生折扣   苹果公司还提供了一个面向学生和教育人士的University计划。如果你是一名CS专业的大学生,与你的教授核实一下,看看你的学校是否属于University计划的一部分。有关iPhone Developer University计划的更多信息,请参见http://developer.apple.com/support/iphone/university。   基于Intel的Mac(运行Mac OS X Leopard或Snow Leopard)。推荐运行Snow Leopard,因为它能通过许多新功能(比如“构建和分析”功能)访问Xcode 3.2。你需要大量的磁盘空间进行开发,Mac至少要有1 GB的RAM,最好有2 GB或4 GB,以便加快编译速度。   一个iPhone或iPod touch。虽然iPhone SDK和Xcode包含测试应用程序所需的模拟器,但如果你要为该平台开发应用程序,确实需要有一个真正的iPhone和iPod touch。可以使用USB数据线将设备连接到计算机,并安装已经创建好的软件。对于实际的App Store部署,手边拥有多代硬件产品是有帮助的,因为你可以在目标受众将使用的相同平台上进行测试。   至少一个可用的USB 2.0端口。使用该端口可将开发用的iPhone或iPod touch连接到计算机,进行文件传输和测试。   因特网连接。使用此连接能够通过活动WiFI连接和EDGE或3G服务来测试程序。   熟悉Objective-C。要编写iPhone程序,就需要了解Objective-C 2.0。该语言基于ANSI C和面向对象的扩展,这意味着你还需要了解一点C语言知识。如果你使用Java或C++编写过程序且熟悉C,那么学习Objective-C非常简单。第3章将帮助你快速上手。   说明 虽然SDK支持iPhone和iPod touch开发,以后还可能支持尚未发布的平台,但为简单起见,本书所指的目标平台均为iPhone。进行iPod touch开发时,书中的大多数例子都适用。但也包括某些明显不适用于iPod touch的特性,如手机和内置扬声器。   成为一名Mac/iPhone开发人员   如前所述,一本书不可能面面俱到。如果我试图将你需要的所有知识囊括在这本书中,你也不可能全部吸收。其实,要针对Mac和iPhone平台进行开发,你需要了解许多内容。如果你只是一个新手,没有任何编程经验,首先要做的就是修一门大学级别的C语言课程。虽然字母表是以A开头,但大部分编程语言的根基以及成为开发人员的旅途都是以C开始。   在你了解了C并知道如何使用编译程序(将在C基础课程中学到)之后,其余部分就很简单了。从这里可以直接跳到Objective-C,学习如何使用该语言和Cocoa框架编程。为能始终帮助你,我组织了如图P-1所示的流程图,指出各个阶段应阅读的相关书目。   在了解了C之后,关于学习如何使用Objective-C编程就有几个选择。如果想快速概览Objective-C,可以翻到本书的第3章并阅读该章的内容。但是,如果想深入了解该语言,可以阅读苹果公司自身的文档“Object-Oriented Programming with Objective-C 2.0” ,或者购买一本书,比如Stephen Kochan的Programming in Objective-C 2.0(《Objective-C2.0程序设计》Addison-Wesley,2009)。   掌握相关的语言后,下一步就要用到Cocoa和开发工具,也称为Xcode。对此有几个不同的选择。你可以参考苹果公司自身有关Cocoa和Xcode的文档 ,或者选择最合适的书籍。Aaron Hillegass是亚特兰大的Big Nerd Ranch 的创建者,是Cocoa Programming for Mac OS X(《苹果开发之COCOA编程》)一书的作者,现在该书已经发布第3版了。Aaron的书在Mac开发界受到高度评价,是cocoa-dev邮购列表上的首推书目。要想了解有关Xcode的更多内容,只需看Sams出版社出版的Fritz Anderson编写的Xcode 3 Unleashed就够了。虽然当前版本没有涉及Xcode特定于iPhone的功能(Xcode 3.1有介绍),但本书会就如何将Xcode作为开发环境使用,为你提供一个扎实的基础。   图P-1 成为iPhone程序员的必经之路   说明 市面上还有其他出版社出版的大量图书,包括最畅销的Beginning iPhone 3 Development(《iphone 3开发基础教程》),该书由Dave Marks和Jeff LaMarche合著(Apress,2009)。所以不要局限于一本书或一家出版社的图书。   要真正掌握Mac开发,你需要查看各种资源:图书、博客、邮件列表、苹果公司自身的文档,而最好的就是会议。如果你有机会参加WWDC或C4,就知道我在讲什么。如果你是一位资深的开发人员,那么你在会议上与其他开发人员交流或在WWDC上与苹果公司的工程师交流所花的时间绝对物有所值。   本书的组织结构   针对iPhone开发新手面对的常见问题:布局界面元素、响应用户操作、访问本地数据源以及连接到因特网,本书逐一提供了解决方案。每章都将相关的任务归类在一起,读者可以直接查看相关问题的解决方案,而不需要琢磨哪些类或框架最适合当前问题。   你可通过复制粘贴的方式使用书中的代码,非常方便。这样一来,你可以在自己的项目中随意重用书中的源代码,然后根据需要进行调整。   下面概述了本书中各章的内容。   第1章:iPhone SDK简介   第1章介绍iPhone SDK并将iPhone作为交付平台进行研究,包括平台的限制等。它对标准iPhone应用程序进行了细分,指导你上手使用iPhone Developer Portal。   第2章:构建第一个项目   第2章介绍了如何构建第一个Hello World应用程序。其中包括Xcode和Interface Builder,展示如何在你的项目中使用这些工具。你将了解基本的调试工具以及这些工具的使用方式,并学习一些便捷的编译器指令技巧。你还将了解如何创建配置文件,并使用它们将你的应用程序部署到设备、beta测试器和App Store中。   第3章:Objective-C训练营   如果你是Objective-C和iPhone新手,一定会喜欢本章有关基本技术的内容。Objective-C是面向iPhone和Mac OS X的标准编程语言。它提供了功能强大的面向对象语言,允许你利用苹果公司的Cocoa和Cocoa Touch框架构建应用程序。第3章介绍了Objective-C语言,概述了其面向对象的功能,讨论了内存管理技术,还增加了一个公共类概述,帮助你上手使用Objective-C编程。   第4章:设计界面   第4章介绍了iPhone的可视类库。包括研究这些类及其几何结构。本章介绍如何使用这些类,并探讨如何处理设备重定向等任务。你将了解如何布局和定制界面,学习同时依赖于Interface Builder创建的界面和以Objective-C为中心的界面的混合解决方案。   第5章:使用视图控制器   简而言之,iPhone范型就是小屏幕、大虚拟世界。这一章将探索各种视图控制器类,使用这些类可以对与用户交互的虚拟空间进行扩大和排序。本章还讲述在iPhone应用程序屏幕之间导航时,如何让这些强大的对象执行所有繁重的任务。   第6章:组合视图和动画   第6章介绍iPhone视图,即位于屏幕上的对象。学习如何布局、创建和排序视图来为iPhone应用程序创建构架。还会了解视图的层次结构、几何结构、动画和使iPhone栩栩如生的功能。   第7章:图像处理   第7章介绍图像,特别是UIImage类,包括使用iPhone图像所需的所有基础知识。你将学习如何在应用程序中加载、存储和修改图像数据,了解如何将图像添加到视图以及如何将视图转化为图像,探究如何处理图像数据来创建特效,如何逐字节存取图像,如何使用iPhone内置的摄像头拍照。   第8章:手势和触摸   在iPhone上,触摸是用户向应用程序表达其意图最重要的方式。触摸不局限于按钮按压和键盘交互。本章介绍直接操作界面、多点触摸等内容。你将了解如何创建用户可在屏幕上随意拖动的视图,以及如何分辨和解译手势。   第9章:构建和使用控件   控件类为许多iPhone交互元素提供了基础,包括按钮、文本字段、滑块和开关。本章介绍控件及其用法。你将了解标准控件交互以及如何定制这些对象来满足应用程序的特定需求。你还将学习如何从头构建自己的控件,如本章创建的一个定制触摸转盘。   第10章:提醒用户   iPhone为用户提供了多种警告方式,从弹出对话框和进度条到音频提示和状态栏更新。这一章展示如何将这些指示功能构建到应用程序中,并扩展用户警告词汇库。还介绍了使用这些弹出类的标准方式,提供了无需显式回调而创建更多线性程序的解决方案。   第11章:创建和管理表格视图   表格提供了在小型受限设备上获得出色运行效果的交互类。iPhone和iPod touch附带的许多应用程序都以表格为中心,包括Settings、YouTube、Socks和Weather。本章展示iPhone表格如何工作,开发人员可使用哪类表格,以及如何在自己的程序中使用表格特性。   第12章:连接GameKit和Bonjour进行连联   GameKit是苹果公司最新的对等临时联网解决方案。它的技术基础称为Bonjour,可以在两个设备之间进行简单、无需配置的通信。本章介绍GameKit,通过它,可以构建在iPhone之间或者在iPhone与桌面系统之间来回传递信息的游戏和实用工具。本章介绍标准的GameKit,你将了解如何向应用程序添加GameKit Voice进行步话聊天。还将学习超出GameKit限制的基本Bonjour编程,将iPhone通信扩展到桌面。   第13章:网络连接   作为一种能连接互联网的设备,iPhone非常适用于订阅基于Web的服务。苹果公司凭借其在各类网络计算服务方面的坚实基础和支持技术丰富了这一平台。本章将探讨常用的网络计算技术,并提供能简化日常工作的方法。你将了解网络可达性、同步和异步下载以及如何使用iPhone安全密钥链解决身份验证难题等。   第14章:设备能力   每种iPhone设备都是唯一性、共享性、暂时性和持久性的混合体。这些属性包括设备的当前物理方向、型号名称、电池状态以及随附硬件的访问。本章介绍从设备的构建配置到活动的内置传感器等内容,提供返回所使用设备的各种信息项的秘诀。此外还将介绍在运行时进行硬件测试的前提条件,以及如何在应用程序的Info.plist文件中指定这些条件。你还将学会如何获得传感器反馈,并订阅通知,以便在这些传感器状态改变时创建回调。本章介绍了iPhone设备上可用的硬件、文件系统和传感器,帮助你以编程的方式利用这些特性。   第15章:音频、视频和媒体工具   iPhone是媒体大师,其内置的iPod功能专门处理音频和视频。iPhone SDK为开发人员公开了这种功能。丰富的类集合通过回放、搜索和录制简化了媒体处理操作。本章介绍使用这些类将媒体展现给用户,并使用户与媒体进行交互的秘诀。你将了解如何构建音频和视频播放器以及音频和视频录制器,探究如何浏览iPod库以及如何选择要播放的项。   第16章:推送通知   当开发人员需要直接与用户沟通时,就可以使用推送通知作为解决方案。这种方法通过一个专门的苹果服务直接将消息发送到iPhone屏幕上。推送通知能让iPhone显示一个警告、播放定制的声音,或者更新一个应用程序标志。这样,电话之外的服务就可通过一个基于iPhone的客户端进行连接,使它们知晓新数据或更新。这一章介绍推送通知、推送通知的运作方式,并深入探讨创建基于推送的系统所需的细节。   第17章:使用Core Location和MapKit   Core Location在iPhone上实现了基于各种技术及来源的按需地理定位技术。MapKit增加了交互式应用程序内部映射,允许用户查看和使用已标注的地图。利用Core Location和MapKit开发的应用程序就可以协助用户与朋友见面、搜索本地资源或提供基于位置的个人信息流。本章介绍这些位置感知框架并说明如何将其集成到iPhone应用程序中。   第18章:连接地址簿   iPhone的地址簿框架支持以编程方式访问和管理联系人数据库。本章介绍地址簿,演示如何在应用程序中使用地址簿框架。你将了解每个联系人的访问信息,如何修改和更新联系人信息,以及如何使用谓词来查找所关注的联系人。本章还将介绍一些GUI类,这些类提供了用于挑选、查看和修改联系人的交互式解决方案。   第19章:使用Core Data   Core Data提供了托管数据存储区,可从应用程序查询和更新这些存储区。它提供一个基于Cocoa Touch的对象接口,将来自SQL查询的关系数据管理带到了iPhone开发的Objective-C世界。本章介绍Core Data,并提供了丰富的秘诀来探索这项技术,为进一步学习Core Data提供了一个起点。你将学习如何设计托管数据存储区,添加和删除数据,并从代码中查询这些数据。   第20章:StoreKit:应用程序内购买   3.0 SDK新增了一项特性,StoreKit提供了应用程序内购买功能,这种机制可以集成到软件中。本章介绍StoreKit并展示如何使用StoreKit API为用户创建购买选项。本章介绍如何使用StoreKit,如何在iTunes Connect上安装产品并本地化其描述。你将看到如何创建测试用户,以及如何克服各种开发/部署障碍。本章还将介绍如何吸引用户购买产品,以及如何将购买请求转移到商店以进行支付。学完本章后,你将对StoreKit有一个整体的了解,包括从产品创建到销售的整个过程。   第21章:辅助功能以及其他iPhone OS服务   应用程序以多种方式与标准iPhone服务进行交互,本章介绍了几种方法。应用程序可以定义它们连接到iPhone VoiceOver可访问性处理程序的接口,创建它们的GUI元素描述。它们可以创建捆绑包,从而与内置的Settings应用程序一起使用,这样,用户就可以使用这个接口访问应用程序的默认设置。应用程序也可以声明公共URL方案,让其他的iPhone应用程序联系它们并请求它们自己提供的服务。本章探讨了这些应用程序的服务交互,展示了如何在你的应用程序中实现这些功能。你将了解到如何通过代码、Interface Builder以及支持文件构建这些服务桥梁。   附录A:Info.plist密钥   该附录集合了iPhone Info.plist文件中的许多现有密钥,该文件描述iPhone操作系统的一个应用程序。   关于示例代码   出于教学的目的,本书的示例代码都在一个main.m文件中。这不是人们通常开发iPhone或Cocoa应用程序的方式,也不应该是这种方式,但它提供了一种表达高见的好方式。当用户必须同时查看5个、7个或9个独立文件时,很难一下子讲述清楚。提供一个文件可以将所有内容集中到一起,便于读者集中了解某个观点。   这些示例并非旨在作为独立的应用程序。它们的目的在于展示一个秘诀和一个观点。一个具有核心描述的main.m文件揭示了一处实现案例。读者可以使用标准文件结构和布局研究这些观点,并将其转化为标准应用程序结构。本书中的演示不以标准的日常最佳实践方法生成代码。它只是一种教学方法,为你提供了可以按需融入你的作品中的简明解决方案。   相比之下,对于苹果公司的标准示例代码,你必须查找许多文件,为提供的概念构建一个思维模型。这些样例是作为完整的应用程序构建的,常常执行与你要解决的问题相关而非必要的任务。光是弄清这些相关部分就需要大量的时间,你需要多加努力。本书对于这个单文件规则有如下两个例外。   首先,应用程序的创建过程使用由Xcode创建的完整文件结构,将你实际需要的内容在自己构建的实际应用程序中体现出来。因此walkthrough文件夹同时包含大量文件。   其次,当类本身是秘诀或提供预制实用程序类时,会提供标准类和头文件。有些秘诀不重点强调一种技术,而是提供这些预制类实现和类别(即对已有类而非新类的扩展)。对于这些秘诀,可查找独立的.m和.h文件,以及封装所有其余部分的main.m骨架文件。   本书的示例多半使用一个应用程序标识符com.sadun.helloworld。你需要使用与你配置文件匹配的标识符替换该标识符。本文使用一个标识符来避免因同时使用多个示例而填满iPhone。每个示例替换前一个示例,确保SpringBoard相对保持有条不紊。如果你想同时安装多个示例,只需编辑标识符、添加一个唯一后缀,比如com.sadun.helloworld.table-edits。   获取示例代码   本书的源代码来自于开源GitHub站点http://github.com/erica/iphone-3.0-cookbook-/tree。在这里,你可以找到按章分类的源代码,其中涉及本书所用的工作示例。   示例代码并非是固定的。在Apple更新其SDK和Cocoa Touch库时,它也会随之更新。你可以随时参与其中,提出一些错误修正建议或扩充所提供的代码。GitHub允许你分叉资源库并将自己的调整程序和功能添加到其中,然后汇集到主要资源库中进行共享。如果你有一个新观点或方法,请与我们联系。我们很高兴能在资源库和本书的下一版中包括这些好建议。   获取Git   你可以使用git版本控制系统下载本书的源代码。http://code.google.com/p/git-osx-installer上有git的一个Mac OS X实现。Mac OS X git实现包括命令行和GUI解决方案,因此你可以搜寻最适合你的开发需求的版本。   访问GitHub   GitHub(http://github.com)是最大的git托管站点,拥有150 000多个公共资源库。它为公共项目提供免费托管服务,为私人项目提供付费服务。该站点拥有一个自定义的Web界面,包含wiki托管、问题追踪和对项目开发人员社交网络的关注,是查找新代码或辅助编辑已有库的一个好地方。你可以在其Web站点上免费注册一个账户,然后就可以复制和修改本书的资源库或创建自己的开源iPhone项目并与他人共享。   联系作者   如果你对本书有任何意见或疑问,请给我发送电子邮件([email protected]),或者直接访问www.ericasadun.com,了解本书相关更新和iPhone开发人员最新资讯。可随意访问我的网站并下载软件、阅读文档以及发表评论。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK