全面提高开发者的技能水平,工具|实践|理论一步到位;
结合国内特有的开发需求,为iOS开发者量身打造;
国内iOS开发微信公共帐号运营者首次经典分享;
真正适合iOS中、高级开发者的进阶读物。
《iOS开发进阶》分工具、实践、理论三大部分。前一部分介绍iOS 开发的常用工具,第二部分介绍iOS开发中的一些常见的实践经验,第三部分介绍iOS 开发中涉及的原理。
如果把成为iOS 开发高手的过程比作武侠小说中的修炼过程的话,工具、实践和理论的学习就分别对应兵器、招式和内功的修炼。《iOS开发进阶》希望通过这三方面的综合讲解,全面提高开发者的技能水平。
第一部分:iOS开发工具
iOS开发工具部分详细介绍了iOS开发必备的命令行工具、图形工具、插件工具及第三方网站提供的相关服务。
命令行工具,我们将学习CocoaPods。
图形工具,我们将学习Charles和Reveal。
插件工具,我们将学习Alcatraz及一系列Xcode增强插件。
第三方的服务,我们将学习统计服务Flurry、崩溃日志记录服务Crashlytics、AppStore统计服务AppAnnie。
熟练掌握这些iOS开发工具和服务,可以使我们的开发效率得到成倍地提高。
第2章使用CocoaPods做依赖管理
每种语言发展到一定阶段,都会出现相应的依赖管理工具,例如Java语言的Maven、Node.js的npm等。本章讲解iOS项目的依赖管理工具CocoaPods。
2.1CocoaPods简介
随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,它的名字叫作CocoaPods。
CocoaPods项目的源码在Github上管理。该项目开始于2011年8月,经过多年发展,现在已经成为iOS开发事实上的依赖管理标准工具。开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和更新第三方开源库的时间。
我在开发猿题库客户端时,使用了24个第三方开源库。在使用CocoaPods以前,我需要:
1.把这些第三方开源库的源代码文件复制到项目中,或者设置成git的submodule。
2.这些开源库通常需要依赖系统的一些framework,我需要手工地将这些framework一一增加到项目依赖中。比如通常情况下,一个网络库就需要增加以下framework:CFNetwork、SystemConfiguration、MobileCoreServices、CoreGraphics、zlib。
3.对于某些开源库,我还需要设置-licucore或者-fno-objc-arc等编译参数。
4.管理这些依赖包的更新。
这些“体力活”虽然简单,但毫无技术含量并且浪费时间。在使用CocoaPods之后,我只需要将用到的第三方开源库放到一个名为Podfile的文件中,然后执行podinstall。CocoaPods就会自动将这些第三方开源库的源码下载下来,并且为我的工程设置好相应的系统依赖和编译参数。
2.2CocoaPods的安装和使用
2.2.1CocoaPods的安装
CocoaPods的安装方式异常简单,Mac下都自带ruby,使用ruby的gem命令即可下载安装:
$sudogeminstallcocoapods
$podsetup
如果你的gem太老,可以尝试用如下命令升级gem:
sudogemupdate--system
另外,ruby的软件源rubygems.org因为使用亚马逊的云服务,所以被屏蔽了,需要更新一下ruby的源,下面的代码将官方的ruby源替换成国内淘宝的源:
gemsources--removehttps://rubygems.org/
gemsources-ahttp://ruby.taobao.org/
gemsources-l
还有一点需要注意,podsetup在执行时,会输出SettingupCocoaPodsmasterrepo,但是会等待比较久的时间。这步其实是CocoaPods在将它的信息下载到~/.cocoapods目录下,如果你等太久,可以试着cd到那个目录,用du-sh*来查看下载进度。你也可以参考本文接下来的“使用CocoaPods的镜像索引”一节的内容来提高下载速度。
……
第1章引言
1.1 我为什么要写本书
1.1.1 我的构思
1.1.2 内容导读
1.2 如何提高 iOS 开发技能
第一部分介绍: iOS 开发工具
第2章使用CocoaPods做依赖管理
第3章网络封包分析工具Charles
第4章界面调试工具Reveal
第5章移动统计工具Flurry
第6章崩溃日志记录工具Crashlytics
第7章AppStore统计工具AppAnnie
第8章Xcode插件
8.1 Xcode插件管理工具 Alcatraz
8.2 常用Xcode插件
第9章其他工具介绍
9.1 取色工具: 数码测色计
9.2 其他图形工具
9.3 命令行工具
第二部分介绍:iOS 开发实践
第10章理解内存管理
10.1 引用计数
10.2 使用 ARC
第11章掌握GCD
第12章使用UIWindow
第13章动态下载系统提供的多种中文字体
第14章使用应用内支付
第15章基于UIWebView的混合编程
15.1 混合编程简介
15.2 使用模板引擎渲染HTML界面
15.3 Objective-C语言和JavaScript语言相互调用
15.4 如何传递参数
15.5 同步和异步
15.6 注意事项
15.7 使用Safari进行调试
第16章安全性问题
16.1 前言
16.2 网络安全
16.3 本地文件和数据安全
16.4 源代码安全
第17章基于CoreText的排版引擎
17.1 CoreText简介
17.2 基于CoreText的基础排版引擎
第18章实战技巧
18.1 App Store 与审核
18.2 开发技巧
18.3 Xcode使用技巧
18.4 调试技巧
18.5 ipa文件格式
18.6 为工程增加 Daily Build
18.7 使用脚本提高开发效率
18.8 管理代码片段
第三部分介绍:iOS 开发底层原理
第19章 Objective-C对象模型
19.1 简介
19.2 isa指针
19.3 类的成员变量
19.4 对象模型的应用
第20章TaggedPointer对象
第21章 Block对象模型
21.1 block的内部数据结构定义
21.2 用clang分析block实现
21.3 注意事项
——objccn.io创始人、《Swifter》作者王巍(onevcat)
★唐巧是国内较早从事iOS开发的资深工程师,并在个人博客、InfoQ、微信公众号等平台持续更新技术文章,我们也曾邀请他给微信iOS团队分享相关经验。目前市面上缺乏对Objective-C高级特性、Xcode插件等做全面剖析和整理的图书,《iOS开发进阶》很好地填充了此处的空白,相信对广大iOS开发者会有很大的帮助。
——微信iOS客户端团队负责人lylechen