Upload
imshining-devcamp
View
698
Download
0
Embed Size (px)
DESCRIPTION
应用重构:《从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践》| 知乎 耿健桓 | iOS DevCamp 议题简介:当为知乎等以 Web 为主的复杂社交产品开发 iOS 端时,我们在开发上总会面临的一个棘手的矛盾,即迭代速度以及原生体验间的取舍。本次演讲将以知乎 iPhone 端从 1.0 到 2.0 的重构过程为例,讲解为复杂社交网络产品开发 iOS 端时,用于解决开发迭代速度及原生体验间矛盾的策略及实践。 个人简介:耿健桓,知乎 iOS Tech Leader。独立完成了知乎 iPhone 端 1.0 的开发,并带领团队完成了知乎 iPhone 端从 1.0 到 2.0 的重构。
Citation preview
iOS DevCampJuly 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 : ZHSearchResultListViewController
Friday, August 3, 12
银弹
Friday, August 3, 12
银弹没有
Friday, August 3, 12