淘宝 for iOS 历程淘宝•徐基伟2011.07.10
About Me
徐基伟(崇厚)淘宝 - i工作室,iOS 开发工程师负责淘宝 for iOS 的开发工作
Email: [email protected]
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.