SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
iOS DevCamp
                             July 27
                       Produced by CSDN

         Website: http://devcamp.csdn.net/
         Weibo: http://weibo.com/cmdnclub/




Friday, August 3, 12
Web 为主的复杂社交产品
                  的 iOS 端开发策略及实践


                 耿健桓
                 知乎 iOS Tech Lead


Friday, August 3, 12
问题



Friday, August 3, 12
知乎1.0 面临的问题


                       • 迭代开发速度慢
                       • 逻辑层次不清晰,代码耦合严重


Friday, August 3, 12
重构



Friday, August 3, 12
特点

                       • Web 为主
                       • 复杂社交产品
                       • iOS 端


Friday, August 3, 12
Web 为主


                       • 产品、视觉、交互设计等以 Web 为主
                       • 首先用 Web 技术实现


Friday, August 3, 12
复杂社交产品


                       • 对象复杂多样
                       • 对象间的关系复杂多样


Friday, August 3, 12
iOS 端

                       • 原生性
                        • 体验
                        • 技术


Friday, August 3, 12
矛盾



Friday, August 3, 12
矛盾


                       • 与 Web 相同的迭代速度
                       • iOS 原生体验


Friday, August 3, 12
Shell App?



Friday, August 3, 12
Shell App 的优势

                       • 应用不需要发布新版本就可以让用户享
                        用新功能

                       • ⼀一旦实现了新特性,可以跨平台分发
                       • 如果工程师有 Web 开发经验,可以面对
                        熟悉的 Tech Stack



Friday, August 3, 12
Shell App 的劣势

                       • 框架不是免费的
                       • 体验的不⼀一致性
                       • 性能


Friday, August 3, 12
So what?



Friday, August 3, 12
可以融通的设计思想

                       • MVC
                       • RESTful
                       • Stateless


Friday, August 3, 12
实践

                       • 剥离视图之间的跳转逻辑
                       • 用 RESTful 定义 Web API 并用原生技术在
                        应用里实现相应的 Model

                       • 松散耦合指导 UI 类库开发

Friday, August 3, 12
剥离视图之间的跳转逻
                        辑


                       • Storyboard
                       • 自行实现


Friday, August 3, 12
RESTful API

                       • 对象
                       • 集合
                       • 服务


Friday, August 3, 12
松散耦指导 UI 类库开
                           发

                       • 拆分 UITableViewController 的
                        delegate 和 dataSource

                       • 复合控制器


Friday, August 3, 12
复合控制器
                       • ZHObjectPickerController
                        • UINavigationController
                          • ZHSearchDisplayController
                          • ZHPickerListViewController :
                            ZHSearchResultListViewControlle
                            r


Friday, August 3, 12
银弹



Friday, August 3, 12
没有银弹



Friday, August 3, 12
谢谢!

                 zhi.hu/dismory
                 d@zhihu.com
                 @dismory


Friday, August 3, 12

Weitere ähnliche Inhalte

Ähnlich wie 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践 (7)

Node Party HongKong
Node Party HongKongNode Party HongKong
Node Party HongKong
 
移动的前端技术架构和性能优化
移动的前端技术架构和性能优化移动的前端技术架构和性能优化
移动的前端技术架构和性能优化
 
AVOSCloud简介——万象移动云平台
AVOSCloud简介——万象移动云平台AVOSCloud简介——万象移动云平台
AVOSCloud简介——万象移动云平台
 
Android vs e pub
Android vs e pubAndroid vs e pub
Android vs e pub
 
Getting Started with the Tools of Software Development
Getting Started with the Tools of Software DevelopmentGetting Started with the Tools of Software Development
Getting Started with the Tools of Software Development
 
走上It之路
走上It之路走上It之路
走上It之路
 
Ruby中的常量与rails中常量的加载
Ruby中的常量与rails中常量的加载Ruby中的常量与rails中常量的加载
Ruby中的常量与rails中常量的加载
 

Mehr von imShining @DevCamp

Mehr von imShining @DevCamp (10)

和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂
 
Android消息推送实现 | 友盟 徐仙明
Android消息推送实现 | 友盟 徐仙明 Android消息推送实现 | 友盟 徐仙明
Android消息推送实现 | 友盟 徐仙明
 
千万级并发在线推送系统架构解析 | 个信互动 叶新江
千万级并发在线推送系统架构解析 | 个信互动 叶新江千万级并发在线推送系统架构解析 | 个信互动 叶新江
千万级并发在线推送系统架构解析 | 个信互动 叶新江
 
发现和建立多设备之间的数据通信 | 豌豆荚实验室 孙桥
发现和建立多设备之间的数据通信 | 豌豆荚实验室 孙桥发现和建立多设备之间的数据通信 | 豌豆荚实验室 孙桥
发现和建立多设备之间的数据通信 | 豌豆荚实验室 孙桥
 
Android音频口数据通信开发 | 爱图腾 李鹏军
Android音频口数据通信开发 | 爱图腾 李鹏军Android音频口数据通信开发 | 爱图腾 李鹏军
Android音频口数据通信开发 | 爱图腾 李鹏军
 
凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山
凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山
凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山
 
简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞
简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞
简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞
 
在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛
在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛
在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛
 
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
 
逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp
逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp
逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp
 

从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. 后者不利于多人协作\n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. - 降低了审核时间的开销\n
  14. \n
  15. \n
  16. \n
  17. - 专注于视图本身逻辑的开发\n- 使得任何 Web App 都可以被高度抽象地被归纳为 Objects Collection Viewer 和 Editor 模型\n- 上下文无关使得耦合大幅降低,方便多人协作以及重用组件的开发\n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n