├── .gitignore ├── BookCover.jpg ├── DemoProjects ├── CoreText.zip ├── CreateClass.zip ├── Flurry.zip ├── RetainCount.zip ├── RetainCycle.zip ├── TaggedPointer.zip └── UIWindow.zip ├── README.md ├── Recommendation.md ├── TableOfContents.md └── TableOfNewContents.md /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /BookCover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangqiaoboy/iOS-Pro/5b74e250b395015bdd1929f4284450fdba1778a5/BookCover.jpg -------------------------------------------------------------------------------- /DemoProjects/CoreText.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangqiaoboy/iOS-Pro/5b74e250b395015bdd1929f4284450fdba1778a5/DemoProjects/CoreText.zip -------------------------------------------------------------------------------- /DemoProjects/CreateClass.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangqiaoboy/iOS-Pro/5b74e250b395015bdd1929f4284450fdba1778a5/DemoProjects/CreateClass.zip -------------------------------------------------------------------------------- /DemoProjects/Flurry.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangqiaoboy/iOS-Pro/5b74e250b395015bdd1929f4284450fdba1778a5/DemoProjects/Flurry.zip -------------------------------------------------------------------------------- /DemoProjects/RetainCount.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangqiaoboy/iOS-Pro/5b74e250b395015bdd1929f4284450fdba1778a5/DemoProjects/RetainCount.zip -------------------------------------------------------------------------------- /DemoProjects/RetainCycle.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangqiaoboy/iOS-Pro/5b74e250b395015bdd1929f4284450fdba1778a5/DemoProjects/RetainCycle.zip -------------------------------------------------------------------------------- /DemoProjects/TaggedPointer.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangqiaoboy/iOS-Pro/5b74e250b395015bdd1929f4284450fdba1778a5/DemoProjects/TaggedPointer.zip -------------------------------------------------------------------------------- /DemoProjects/UIWindow.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangqiaoboy/iOS-Pro/5b74e250b395015bdd1929f4284450fdba1778a5/DemoProjects/UIWindow.zip -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 《 iOS 开发进阶》随书示例程序和勘误 2 | ======= 3 | 4 | 7 | 8 | ##重要信息 9 | 10 | * [主要内容目录](https://github.com/tangqiaoboy/iOS-Pro/blob/master/TableOfContents.md) 11 | * [相关评语](https://github.com/tangqiaoboy/iOS-Pro/blob/master/Recommendation.md) 12 | 13 | ##图书购买链接 14 | 15 | * [京东购书地址](http://item.jd.com/11598468.html) 16 | * [亚马逊购书地址](http://www.amazon.cn/iOS%E5%BC%80%E5%8F%91%E8%BF%9B%E9%98%B6-%E5%94%90%E5%B7%A7/dp/B00R43XG9S/ref=sr_1_2?ie=UTF8&qid=1418997212&sr=8-2&keywords=ios%E5%BC%80%E5%8F%91%E8%BF%9B%E9%98%B6) 17 | * [china-pub购买地址](http://product.china-pub.com/3770871) 18 | 19 | ## 随书示例程序 20 | 21 | 文件路径 | 文件说明 | 下载链接 22 | ----- | ----- | ----- 23 | `/DemoProjects/Flurry.zip` | 统计工具Flurry 章节示例程序 | [下载](https://raw.githubusercontent.com/tangqiaoboy/iOS-Pro/master/DemoProjects/Flurry.zip) 24 | `/DemoProjects/CoreText.zip` | 基于CoreText的排版引擎 章节示例程序 | [下载](https://raw.githubusercontent.com/tangqiaoboy/iOS-Pro/master/DemoProjects/CoreText.zip) 25 | `/DemoProjects/UIWindow.zip`| UIWindow 章节示例程序 | [下载](https://raw.githubusercontent.com/tangqiaoboy/iOS-Pro/master/DemoProjects/UIWindow.zip) 26 | `/DemoProjects/RetainCount.zip`| 理解内存管理-引用计数 章节示例程序 | [下载](https://raw.githubusercontent.com/tangqiaoboy/iOS-Pro/master/DemoProjects/RetainCount.zip) 27 | `/DemoProjects/RetainCycle.zip`| 理解内存管理-循环引用问题 章节示例程序| [下载](https://raw.githubusercontent.com/tangqiaoboy/iOS-Pro/master/DemoProjects/RetainCycle.zip) 28 | `/DemoProjects/CreateClass.zip`| Objective-C对象模型-动态创建对象 章节示例| [下载](https://raw.githubusercontent.com/tangqiaoboy/iOS-Pro/master/DemoProjects/CreateClass.zip) 29 | `/DemoProjects/TaggedPointer.zip`| Tagged Pointer对象 章节示例程序| [下载](https://raw.githubusercontent.com/tangqiaoboy/iOS-Pro/master/DemoProjects/TaggedPointer.zip) 30 | 31 | 32 | ## 勘误 33 | 34 | * 第3页,`我使用的是Newsfy`一句中单词拼写错误,应该是 `Newsify`。 35 | * 第10页,`occhina`拼写错误,应该是`oschina`。 36 | * 第34页,第一张图片的配图应该是第35页的首张图。 37 | * 第34页,用reveal连接真机调试章节,由于苹果的编译器升级,加载reveal的步骤更多了,详细的见: 38 | * 第81页,倒数第二行(C++11 提供了基于引用计数的智能指针 share_prt).这里面应该将 share_prt 改为 share_ptr 39 | * 第108页,UIWindow章节中的示例代码中使用了`resignKeyWindow`方法,但是苹果不推荐直接调用该方法,推荐的改法是,隐藏的时候将`window.hiden=YES`,然后设置为nil,再调用原来的window的` makeKeyWindow`方法。 40 | * 第108页,苹果的进入后台的回调函数在新的iOS8中无法显示自定义的`UIWindow`,可以改成在`applicationDidBecomeActive`中调用`UIWindow`的显示 41 | * 第123页,`Hybird`拼写错误,应该是`Hybrid`。 42 | * 第136页,第一行末尾,"一嗨租车虽然已经修改了登录协议"一句。应该将`一嗨租车`改成`神州租车`。 43 | * 第192页,18.2.8小节,"而master分支增加了一个名为ApeDropDownRightArrow.png的资源文件"一句。应该将`ApeDropDownRightArrow.png`改为`gDifficultyBar.png`。 44 | * 第200页,第3行。"学习到它们是用UIWebView的方式来实现的编译界面"。应该将其中的`编译`改成`编辑`。 45 | * 第202页,生成ipa除了可以使用书中介绍的方法外,更好的方法是用 `xcodebuild` 自己的 `-exportArchive -exportFormat ipa` 命令。 46 | 47 | ## 本书对应的“iOS开发”微信公共帐号 48 | 49 | ![iOS开发](http://blog.devtang.com/images/weixin-qr.jpg) 50 | 51 | 52 | -------------------------------------------------------------------------------- /Recommendation.md: -------------------------------------------------------------------------------- 1 | 2 | 我邀请了一些朋友审阅了《iOS开发进阶》初稿,他们的评价如下: 3 | 4 | #### OurCoders站长,资深iOS开发者 [tinyfool](http://www.weibo.com/u/1400229064?topnav=1&wvr=6&topsug=1): 5 | 6 | >2008年苹果发布第一代iOS SDK至今,已经有6个年头,整个移动开发的热潮也5、6年了,虽时有人说热潮将尽,但人才市场里iOS开发者仍旧非常短缺。特别短缺的是专业的优秀的iOS开发者,在各种工具无比先进的年代,一个优秀的开发者比十个一般的开发者都更有价值,也可以获得相应的回报。 7 | 8 | >我一直在说,每一个已经在行业里面的开发者,不应该满足于自己是一个可以干活的人,而应该有所追求,要变成行业的佼佼者,这不仅是因为我们都想有更高的收入,而且人本身就该有追求,特别是当你处在这个迅速变化,生机勃勃的行业中。 9 | 10 | >这本书的作者唐巧在我心中,本身就是我们这个行业中,非常优秀的开发者。但是更值得称赞的是,他提供了这么一本书,让我们也有机会变成更专业的,更优秀的开发者,善莫大焉。 11 | 12 | #### objccn.io创始人、《Swifter》作者 王巍([onevcat](http://www.weibo.com/u/2210132365?topnav=1&wvr=6&topsug=1)): 13 | 14 | >作为一本面向中高级 iOS 开发者的书籍,《iOS开发进阶》一书汇总了很多进阶级开发时所常用和必备的知识。阅读本书不但能帮你借助各类工具大幅提升开发效率,也能加深对 iOS 及 Objective-C 背后机制的理解。如果你想在 iOS 开发的道路上百尺竿头,更进一步的话,这本凝聚了作者多年开发实战经验的进阶级图书将是你不可错过的伙伴! 15 | 16 | #### 微信iOS客户端团队负责人 lylechen 17 | 18 | >唐巧是国内较早从事iOS开发的资深工程师,并在个人博客、InfoQ、公众号等持续更新技术文章,我们也曾邀请他给微信iOS团队分享相关经验。目前市面上缺乏书籍对Objective-C高级特性、Xcode插件等做全面剖析和整理,《iOS开发进阶》很好地填充了此处的空白,相信对广大iOS开发者会有很好的帮助。 19 | 20 | #### 网易新闻客户端技术负责人 王聪([robaggio](http://www.weibo.com/u/1640364052?topnav=1&wvr=6&topsug=1)) 21 | 22 | >本人有幸曾和作者共事,当时他还负责微博后台研发。4年后唐巧转为iOS开发,并成为国内资深专家,主持研发的App也深受市场好评,作者的工作经历本身就是一次完美的『iOS开发进阶』。如果你刚刚提交了第一款AppStore应用,那本书的第一部分定会让你惊叹原来有这么多高效的工具可以帮你;如果你已有一两年iOS开发经验,那你一定会对本书第二部分的各种实战技巧相见恨晚;本书最后部分的底层原理是你成为资深工程师的必备课程。推荐给所有想『进阶』自己的开发者! 23 | 24 | 25 | 另外,[《MacTalk人生元编程》](http://book.douban.com/subject/25826578/)的作者[池建强](http://www.weibo.com/u/1406320502?topnav=1&wvr=6&topsug=1)为本书写了非常精彩的推荐序,光是序言的标题《人生如长跑,成长如进阶》就让我觉得既富有哲理,“进阶”二字又和书名相呼应。但我决定暂不把序言放到网上,给读者一些神秘感。 26 | 27 | -------------------------------------------------------------------------------- /TableOfContents.md: -------------------------------------------------------------------------------- 1 | 《iOS开发进阶》目录 2 | ==== 3 | 4 | 完整的目录有4页。以下是精减过的目录,省略了部分不影响了解全书内容的二级标题,以便突出全书的重点内容。 5 | 6 |
 7 | 第1章 引言
 8 | 1.1 我为什么要写本书 
 9 |     1.1.1 我的构思 
10 |     1.1.2 内容导读
11 | 1.2 如何提高 iOS 开发技能

第一部分介绍: iOS 开发工具
第2章 使用CocoaPods做依赖管理
第3章 网络封包分析工具Charles
12 | 第4章 界面调试工具Reveal
13 | 第5章 移动统计工具Flurry
14 | 第6章 崩溃日志记录工具Crashlytics
15 | 第7章 AppStore统计工具AppAnnie
16 | 第8章 Xcode插件
17 |     8.1 Xcode 插件管理工具 Alcatraz
18 |     8.2 常用 Xcode 插件
19 | 第9章 其他工具介绍
20 |     9.1 取色工具: 数码测色计
21 |     9.2 其他图形工具
22 |     9.3 命令行工具

第二部分介绍:iOS 开发实践
23 | 第10章 理解内存管理
24 |     10.1 引用计数
25 |     10.2 使用 ARC
26 | 第11章 掌握GCD
27 | 第12章 使用UIWindow
28 | 第13章 动态下载系统提供的多种中文字体
29 | 第14章 使用应用内支付
30 | 第15章 基于UIWebView的混合编程
31 |     15.1 混合编程简介
32 |     15.2 使用模板引擎渲染HTML界面
33 |     15.3 Objective-C语言和JavaScript语言相互调用
34 |     15.4 如何传递参数
35 |     15.5 同步和异步
36 |     15.6 注意事项
37 |     15.7 使用Safari进行调试
38 | 第16章 安全性问题
39 |     16.1 前言
40 |     16.2 网络安全
41 |     16.3 本地文件和数据安全
42 |     16.4 源代码安全
43 | 第17章 基于CoreText的排版引擎
44 |     17.1 CoreText 简介
45 |     17.2 基于 CoreText 的基础排版引擎
46 | 第18章 实战技巧
47 |     18.1 App Store 与审核
48 |     18.2 开发技巧
49 |     18.3 Xcode 使用技巧
50 |     18.4 调试技巧
51 |     18.5 ipa 文件格式
52 |     18.6 为工程增加 Daily Build
53 |     18.7 使用脚本提高开发效率
54 |     18.8 管理代码片段
55 |     
56 | 第三部分介绍:iOS 开发底层原理
57 | 第19章 Objective-C对象模型
58 |     19.1 简介
59 |     19.2 isa指针
60 |     19.3 类的成员变量
61 |     19.4 对象模型的应用
62 | 第20章 TaggedPointer对象
63 | 第21章 Block对象模型
64 |     21.1 block的内部数据结构定义
65 |     21.2 用clang分析block实现
66 |     21.3 注意事项
67 | 
-------------------------------------------------------------------------------- /TableOfNewContents.md: -------------------------------------------------------------------------------- 1 | 《iOS开发进阶》内容说明 2 | ==== 3 | 4 | 本书中的所有内容都是我的原创文字,但是有部分在博客上公开过,包括以下9个章节: 5 | 6 |
 7 | 第1章 引言
 8 | 第2章 使用CocoaPods做依赖管理
 9 | 第5章 移动统计工具Flurry
10 | 第6章 崩溃日志记录工具Crashlytics
11 | 第7章 AppStore统计工具AppAnnie
12 | 第8章 Xcode插件
13 | 第11章 掌握GCD
14 | 第13章 动态下载系统提供的多种中文字体
15 | 第14章 使用应用内支付
16 | 
17 | 18 | 以下内容是本书相对于博客内容有增加的,包括以下7个章节: 19 | 20 |
21 | 第3章 网络封包分析工具Charles(增加了高级使用相关内容)
22 | 第8章 Xcode插件(基于博客内容,有补充新内容)
23 | 第9章 其他工具介绍(基于博客内容,有补充新内容)
24 | 第10章 理解内存管理(基于博客内容,有补充新内容)
25 | 第15章 基于UIWebView的混合编程(基于博客内容,有补充新内容)
26 | 第19章 Objective-C对象模型(基于博客内容,有补充新内容)
27 | 第20章 TaggedPointer对象(基于博客内容,有补充新内容)
28 | 
29 | 30 | 以下内容是本书相对于博客完全新增的内容,包括以下4个章节(占全书25%的页数): 31 | 32 |
33 | 
34 | 第4章 界面调试工具Reveal(全新内容)
35 | 第12章 使用UIWindow(全新内容)
36 | 第17章 基于CoreText的排版引擎(全新内容)
37 | 第18章 实战技巧(全新内容)
38 | 
39 | --------------------------------------------------------------------------------