Facebook杂记:新iOS应用背后的故事
导读: Facebook上周发布了新版iOS应用。Facebook工程师介绍了新版iOS应用,Facebook iOS应用的发展历程以及开发思路
Facebook是如何做iOS应用的?
Facebook上周发布了新版iOS应用。Facebook工程师Jonathan Dan在Facebook官方页面中撰文,介绍了新版iOS应用,Facebook iOS应用的发展历程以及开发思路。
我们今天(8月23日)发布了新版iOS应用,速度更快、更可靠、更易用。这款新应用标志着Facebook移动产品开发方式的转型,即深耕不同平台。为了便于你们理解这一转型,让我们回顾移动版Facebook的发展历程。
Three20
早期的iPhone版Facebook诞生于iPhone电子技术的起步阶段,当时还没有iPad,而系统也不叫iOS。在早期版本中,我们开发了名为Three20的开源框架,其中包括当时系统尚未提供的组件库。
在随后几年中,Three20成为iOS社区最流行的开源项目之一,帮我们解决了很多问题。然而随着技术的发展,Three20逐渐显得过时。其功能越来越复杂,对入门者来说上手变难。另一方面,随着iOS核心的迅速发展,Three20的一些功能也显得没有太大用途。因此,最新版iOS应用是我们这么多年来首次没有使用Three20框架。
基于HTML5的发展
随着过去几年移动设备的发展,我们最需要解决的问题是,无论你用什么设备、平台、运营商网络,甚至无论你在哪里,都应当获得不错的移动体验。为了支持数千款手机和多个移动平台,我们利用HTML5技术去开发移动版Facebook,并向包括iOS在内的多个平台发布。
利用HTML5,我们只要进行一次开发,就可以向多个平台发布产品。这样做使我们能覆盖尽可能多的用户,也使Facebook移动业务发展到了当前的规模。实际上,我们选择HTML5不仅是因为可以跨平台使用一套代码,也是由于这样做有利于快速迭代,在不发布新版本的情况下测试新功能。
基于这一网页技术,我们为5亿Facebook移动用户提供服务,并支持了7000多款设备。然而我们意识到,对iOS这样的平台来说,人们会希望更快、更可靠的体验,而这正是我们iOS应用的不足之处。我们已经普及了移动服务,现在需要深耕服务。因此,我们从头开始重写了Facebook的iOS应用,专注于质量,并充分利用iOS系统自身这些年来的发展。
一切为了速度
开发原生iOS应用带来了一个显而易见的好处,就是应用的速度。在新版iOS应用中,动态汇总的滚动明显更流畅,而具体实现方式则是对处理任务的系统资源进行更好的调度。例如在iOS中,主线程驱动用户界面,处理触控事件,因此如果在主线程中处理太多任务,那么应用就会变慢。为了解决这一问题,我们尽量在后台处理对计算资源要求较高的任务,包括所有网络活动、JSON分析、NSManagedObject对象创建以及存盘等。
可以再举另一个例子。我们使用Core Text显示字符串,但排版计算很快成为一个瓶颈。在新版iOS应用中,当我们下载新内容时,我们以异步方式计算字符串大小,缓存在CTFramesetters中,当需要在UITableView中显示时再利用这些计算结果。
在iOS中启动Facebook应用时,你会想看见动态汇总,而不是正在加载的下拉列表。因此,为了提供最好的体验,我们在应用启动时立即显示此前缓存的内容。不过这带来了新问题:如果你的动态汇总中内容太多,那么UITableView将调用一个委托函数tableView:heightForRowAtIndexPath:,对每条内容进行处理,以计算滚动条长度。这将导致应用需要从磁盘中加载所有内容,对整个内容排版进行计算,随后返回所有内容的高度总和。这意味着,当动态汇总中内容过多时,启动速度会变得更慢。
解决这一问题的方法分为两部分。首先,当我们初始化异步排版计算时,我们在Core Data中存储了内容的高度。通过这样做,我们避免了在tableView:heightForRowAtIndexPath:函数中计算排版信息。其次,我们将“内容”的模式对象进行分解,在应用启动时只会从磁盘读取内容的高度信息,随后才读取其他信息。而其他的排版计算均通过异步方式来完成。
通过以上这些方式,我们在屏幕滚动时实现了更高的帧率,并使应用保持响应。
- u-blox通过高性能脚本解决方案扩展蓝牙和Wi-Fi连接软件 2019-02-14
- 抢票软件已被限制是怎么回事?如何稳妥购到火车票? 2019-01-28
- IBM开发出DDL软件库 提升深度学习效率 2017-08-09
- 高通推出神经处理引擎软件开发工具包SDK 2017-07-27
- 英国比克科技发布用于调试PLC应用的Modbus解码软件 2017-07-19
图片新闻
- 3月7日 【在线研讨会】优化性能与成本的石英玻璃选型方案 立即登记 >>
- 即日-3.31 精选NI半导体技术白皮书限时免费下载 立即下载>>
- 4月24日 OFweek2019(第三届)中国高科技产业园区大会 立即登记 >>
- 4月23日 OFweek 2019中国医疗物联网大会 立即抢票>>
- 6月14日 OFweek2019中国先进激光加工技术应用研讨会 立即报名>>
- 8月9日 2019第四届中国(上海)国际人工智能展览会 立即报名>>
- 电子工程
- 猎头职位
- 视觉工程师广东省/深圳市
- 技术研发总监广东省/深圳市
- 高级电气工程师广东省/深圳市
- 封装工程师北京市/海淀区
- 产品总监(金融行业)广东省/深圳市
- 事业部总监(金融行业)广东省/深圳市
- 光模块结构工程师(无锡)江苏省/无锡市
- 光模块光学工程师 (无锡)江苏省/无锡市
- 光器件物理工程师北京市/海淀区
- 销售总监(光器件)北京市/海淀区
我来说两句
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论