从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS...
-
Upload
imshining-devcamp -
Category
Technology
-
view
708 -
download
0
description
Transcript of 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS...
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