淘宝 for iOS 历程

Preview:

Citation preview

淘宝 for iOS 历程淘宝•徐基伟2011.07.10

About Me

徐基伟(崇厚)淘宝 - i工作室,iOS 开发工程师负责淘宝 for iOS 的开发工作

Email: ohdarling88@gmail.com

Twitter: @ohdarling88

淘宝 for iOS13个月,14个版本

• 工具

• 运营

• 积累

• 复用

• 经验

工具

版本控制 Git

• 分布式版本控制系统• 更轻量的分支以及 tag

问题跟踪 Redmine

• 直接与 Git 集成

• 通过插件进行 Code Review

• 扩展性强,可以作为需求管理工具

持续集成 Hudson

• 自动构建最新测试版本App

• 在未来,进行自动化单元测试

• 工具是为人服务的• 适合的才是好的• 充分利用,充分结合

对于工具

运营

运营支持的变迁

使用JSON驱动

多种形式

• 节制,不要无限制地增加展现形式• 前瞻,提前考虑一些展现形式的变化• 终极解决方案:WebView

• 拦截页内链接,从 Web 跳到程序内

对于运营

积累

• 无关 UI 部分

• 统一数据接口,封装为库,包装调用• 淘宝开放平台淘宝无线开放平台其他系统JSON数据

• 返回一致的数据结构,方便处理

基础库

}TBSDK

UI 组件

商品信息Cell

交易信息Cell

商品销售属性选择

UI 组件• 专用组件• 用户信用等级,卖家消保服务图标• 阿里旺旺在线状态按钮等• 通用组件• 渐变按钮,网络图片• 图片浏览等

工具类,辅助类

• 偏好设置• 本地数据• 硬件环境,软件环境• 常用的功能点,封装为工具类

• 统一相似功能需求• 视觉上进行把握和控制• 及时整理• 及时重构

对于积累

复用

淘宝 for iOS 结构

拥抱开源

• ASIHttpRequest

• JSON Framework

• SFHFKeychainUtils

• EGOTableViewPullRefresh

• ShareKit

模块化代码

• 按功能模块组织代码• 低耦合的模块独立为单独项目,使用

Cross-Project Reference

• 拆分 Controller 内视图处理和数据处理

Universal App

• 尽可能使用 iPhone 代码

• 使用 autoresizingMask

• 使用宏判断运行环境

对于复用

• 在没时间和精力造轮子的时候,使用别人造好的轮子

• 造不了大轮子,可以造小轮子• 罗马不是一日建成的,轮子也不是一蹴而就的

经验

内存管理

• 循环引用• 释放缓存• 正确处理 viewDidLoad & viewDidUnload

Weak Link

• 兼容低版本 iOS

• NSClassFromString

• respondsToSelector:

Q&A

Thanks.